路由表用于优化路由地址,依赖\x\Route
组件。
路由表注册,统一在/box/route.php
文件中。
作用:用于注册HTTP服务的路由。
依赖类:\x\Route
方法名:http()
、get()
、post()
注意:get()
、post()
没有$method
参数。
参数:
string $url
string $class
app/http/
string $method
GET|POST
,表示不限制类型GET
、POST
返回值:\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服务的路由。
依赖类:\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服务的路由。
依赖类:\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
注解的参数。
依赖类:\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',
]
]
返回值:\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
注解的参数。
依赖类:\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
websocket
、rpc
以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
websocket
、rpc
以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