路由

    通过配置注入形式,实现非常灵活的配置,你甚至可以自己另外实现路由中间件,而不用被框架自带的中间件所影响,用哪些中间件都在你的掌控之中!

    1. return [
    2. 'beans' => [
    3. 'HttpRoute' => [
    4. // url匹配缓存数量,默认1024
    5. 'urlCacheNumber' => 1024,
    6. // 全局忽略 URL 路由大小写
    7. 'ignoreCase' => false,
    8. ],
    9. ],

    注释目标:类

    表明一个类是控制器类

    注释目标:方法

    属性名称 说明
    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-严格判断

    注释目标:方法

    表明一个方法是动作

    属性:无


    如下代码所示,一个最简单的控制器+路由注解代码。

    1. hello imi!

    路由配置必须写在服务器配置文件中,如果你写在项目配置文件是无效的。

    路由配置支持三种方式:传统、回调、路由回调

    1. $routeResult = RequestContext::get('routeResult');

    $routeResult 定义:

    $routeResult->routeItem 定义:

    1. /**
    2. * 注解
    3. *
    4. * @var \Imi\Server\Route\Annotation\Route
    5. */
    6. public $annotation;
    7. /**
    8. * 回调
    9. * @var callable|\Imi\Server\Route\RouteCallable
    10. */
    11. public $callable;
    12. /**
    13. *
    14. * @var array
    15. */
    16. public $middlewares = [];
    17. /**
    18. * WebSocket 配置
    19. *
    20. * @var array
    21. */
    22. public $wsConfig = [];
    23. /**
    24. * 其它配置项
    25. *
    26. * @var array