数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

路由表用于优化路由地址,依赖\x\Route组件。

路由表注册,统一在/box/route.php文件中。

HTTP路由

作用:用于注册HTTP服务的路由。
依赖类:\x\Route
方法名:http()get()post()
注意:get()post()没有$method参数。

参数:

  • string $url

    • 功能:路由地址
    • 默认值:无
  • string $class

    • 功能:命名空间地址,可以不带app/http/
    • 默认值:无
    • 说明:区分大小写,同时末尾要带上方法名
  • string $method

    • 功能:请求类型
    • 默认值GET|POST,表示不限制类型
    • 其他值GETPOST
    • 说明:不区分大小写

返回值:\x\Route对象本身


示例,注册一条/test/demo路由,控制器是\app\http\Index类的run()方法,请求类型为:POST

use \x\Route;
Route::post('/test/demo', 'Index/run')->register();
// 当然,你也可以这样
Route::http('/test/demo', 'Index/run', 'POST')->register();

WebSocket路由

作用:用于注册WebSocket服务的路由。
依赖类:\x\Route
方法名:websocket()

参数:

  • string $url

    • 功能:路由地址
    • 默认值:无
  • string $class

    • 功能:命名空间地址,可以不带app/websocket/
    • 默认值:无
    • 说明:区分大小写,同时末尾要带上方法名

返回值:\x\Route对象本身


示例,注册一条/test/demo路由,控制器是\app\websocket\Index类的run()方法:

use \x\Route;
Route::websocket('/test/demo', 'Index/run')->register();

Rpc路由

作用:用于注册Rpc服务的路由。
依赖类:\x\Route
方法名:rpc()

参数:

  • string $url

    • 功能:路由地址
    • 默认值:无
  • string $class

    • 功能:命名空间地址,可以不带app/rpc/
    • 默认值:无
    • 说明:区分大小写,同时末尾要带上方法名

返回值:\x\Route对象本身


示例,注册一条/test/demo路由,控制器是\app\rpc\Index类的run()方法:

use \x\Route;
Route::rpc('/test/demo', 'Index/run')->register();

@Param注解注入

作用:用于路由注册时,注入@Param注解的参数。
依赖类:\x\Route
方法名:param()

参数:

  • array $config

    • 功能@Param注解参数元的组合
    • 默认值:无
    • 格式示范
      [
          '字段名称' => [
                'method' => 'post',
                'type' => 'float',
                'empty' => false,
                'chinese' => true,
                'min' => 10,
                'max' => 20,
                'regular' => '/^1[34578]\d{9}$/',
                'tips' => '校验不通过',
                'callback' => '\box\lifecycle\annotate_param', 
          ]
      ]
    • 具体参数说明,可以参考:Param注解用法说明。

返回值:\x\Route对象本身


HTTP的路由做以下示例:

use \x\Route;
Route::get('/test/demo', 'Index/run')->param([
  'id' => [
        'method' => 'post',
        'type' => 'float',
        'empty' => false,
        'chinese' => true,
        'min' => 10,
        'max' => 20,
        'regular' => '/^1[34578]\d{9}$/',
        'tips' => '校验不通过',
  ],
  'name' => [
        'min' => 10,
        'max' => 20,
        'tips' => '校验不通过',
  ]
])->register();

@Limit注解注入

作用:用于路由注册时,注入@Limit注解的参数。
依赖类:\x\Route
方法名:
limitPeak()
limitTime()
limitStart()
limitEnd()
limitCallback()

参数:例如limitPeak()就代表@Limit注解里的peak=""参数元。具体参数说明,可以参考:Limit注解用法说明。

返回值:\x\Route对象本身


HTTP的路由做以下示例:

use \x\Route;
// 2秒内,只允许被访问不大于20次
Route::get('/test/demo', 'Index/run')->limitPeak(20)->limitTime(2)->register();

执行注册

作用:用于最终释放一条路由注册逻辑。
依赖类:\x\Route
方法名:register()

全局前缀

作用:用于给所有路由,注册路由前缀。
依赖类:\x\Route
方法名:prefix()
注意:该方法不需要register()方法进行结尾执行。

参数:

  • array $data

    • 功能:路由前缀配置
    • 默认值:无
    • 格式示范
      [
          '前缀' => [
              '路由1'',
              '路由2',
              '路由N......',
          ],
      ]
  • type $server_type

    • 功能:应用的服务类型
    • 默认值http
    • 其他值websocketrpc
    • 说明:不区分大小写


HTTP的路由做以下示例:

use \x\Route;
// 原来注册了一条/test/demo路由
Route::get('/test/demo', 'Index/run')->register();
// 使用前缀声明之后
Route::prefix([
    '/api/v3/' => [
        '/test/demo'
    ]
], 'http');
// 路由变成了/api/v3/test/demo

同时,prefix()方法还支持通配符*,表示只要是该前半段路由的,路由前缀声明全部生效,例如:

use \x\Route;
// 先注册一条/test/demo路由
Route::get('/test/demo', 'Index/run')->register();
// 再注册一条/test/shop路由
Route::get('/test/shop', 'Index/shop')->register();
// 使用 *通配符 做前缀声明之后
Route::prefix([
    '/api/v3/' => [
        '/test/*'
    ]
]);
// 路由变成了
   /api/v3/test/demo
   /api/v3/test/shop

全局镜像

作用:用于给所有路由,进行镜像转换。
依赖类:\x\Route
方法名:mirror()(2.5.18+)
注意:该方法不需要register()方法进行结尾执行。

参数:

  • array $data

    • 功能:路由镜像配置
    • 默认值:无
    • 格式示范
      [
          '原来的路由' => '镜像后的路由',
      ]
  • type $server_type

    • 功能:应用的服务类型
    • 默认值http
    • 其他值websocketrpc
    • 说明:不区分大小写


HTTP的路由做以下示例:

use \x\Route;
// 原来注册了一条/test/user路由
Route::get('/test/user', 'Index/run')->register();
// 原来注册了一条/test/shop路由
Route::get('/test/shop', 'Index/run')->register();
// 使用镜像路由
Route::mirror([
    '/test/' => '/api/'
], 'http');
// 路由变成了:/api/test/user和 /api/test/shop

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录