路由
通过配置注入形式,实现非常灵活的配置,你甚至可以自己另外实现路由中间件,而不用被框架自带的中间件所影响,用哪些中间件都在你的掌控之中!
return [
'beans' => [
'HttpRoute' => [
// url匹配缓存数量,默认1024
'urlCacheNumber' => 1024,
// 全局忽略 URL 路由大小写
'ignoreCase' => false,
],
],
注释目标:类
表明一个类是控制器类
注释目标:方法
属性名称 | 说明 |
---|---|
url | 请求地址规则。以/ 开头则忽视@Controller 中的prefix 支持代入{name} 形式占位符,匹配出来的值可以作为参数传入动作 |
method | 如果设置了method ,则请求方法必须在method 列表中才可以进到动作。支持字符串和数组。如:"GET" 或{"GET", "POST"} |
domain | 判断域名,只有符合条件才允许访问。支持字符串和数组,支持{name} 形式占位符,可以作为参数传入动作 |
paramsGet | 判断GET 参数,只有符合条件才允许访问。可以是字符串或数组。id=100 必须包含id,并且值为100或id<>100 必须包含id,并且值不为100id 必须包含id参数!id 必须不包含id参数["id" => "\d+"] 支持正则 |
paramsPost | 判断POST 参数,用法同paramsGet |
header | 判断请求头,用法同paramsGet |
requestMime | 请求的mime类型判断判断请求头中的Content-Type中是否包含这些mime类型之一支持字符串和字符串数组 |
ignoreCase | 忽略请求地址大小写null-取HttpRoute中默认值true-忽略大小写false-严格判断 |
注释目标:方法
表明一个方法是动作
属性:无
如下代码所示,一个最简单的控制器+路由注解代码。
hello imi!
路由配置必须写在服务器配置文件中,如果你写在项目配置文件是无效的。
路由配置支持三种方式:传统、回调、路由回调
$routeResult = RequestContext::get('routeResult');
$routeResult
定义:
$routeResult->routeItem
定义:
/**
* 注解
*
* @var \Imi\Server\Route\Annotation\Route
*/
public $annotation;
/**
* 回调
* @var callable|\Imi\Server\Route\RouteCallable
*/
public $callable;
/**
*
* @var array
*/
public $middlewares = [];
/**
* WebSocket 配置
*
* @var array
*/
public $wsConfig = [];
/**
* 其它配置项
*
* @var array