路由注解方式定义 ¶
简要 ¶
- 关键词
注解类型 | 支持<类> | 支持<方法> | 支持<重复> | 类型 | 说明 |
---|---|---|---|---|---|
RouteFlag | ✓ | ✓ | 类型 | 接口标识 | |
RouteRestful | ✓ | ✓ | 类型 | restful风格 | |
RouteGroup | ✓ | ✓ | 类型 | group分组 | |
RouteMiddleware | ✓ | ✓ | ✓ | 类型 | 中间件 |
RouteHeader | ✓ | ✓ | ✓ | 类型 | header |
RouteGet | ✓ | ✓ | 类型 | get、options | |
RoutePost | ✓ | ✓ | 类型 | post、options | |
RoutePut | ✓ | ✓ | 类型 | put、options | |
RoutePatch | ✓ | ✓ | 类型 | patch、options | |
RouteDelete | ✓ | ✓ | 类型 | delete、options | |
RouteRule | ✓ | ✓ | 类型 | get、post、delete、put、patch、head、options |
常规案例 ¶
- RouteGroup + RouteGet 拼接路由,注解注册
- RouteGroup + RoutePost 拼接路由,注解注册
- RouteGroup + RoutePut 拼接路由,注解注册
- RouteGroup + RoutePatch 拼接路由,注解注册
- RouteGroup + RouteDelte 拼接路由,注解注册
- RouteGroup + RouteRule 拼接路由,注解注册
php
<?php
namespace addons\comA\moduleA\controller;
// 路由分组
#[RouteGroup('/comA.modulesA/v1-api/zoos')]
// 路由中间件
#[RouteMiddleware(\app\middleware\AaaaMiddle::class)]
#[RouteMiddleware(\app\middleware\BbbbMiddle::class)]
#[RouteMiddleware(\app\middleware\CcccMiddle::class)]
// 或者
#[RouteMiddleware([
\app\middleware\AaaaMiddle::class
\app\middleware\BbbbMiddle::class,
\app\middleware\CcccMiddle::class,
])]
class TestApi
{
// (该注释不用写)自动注册为* /xxx/api/xxx
#[RouteRule('xxx')]
public function testRule(){}
// (该注释不用写)自动注册为 GET /v1-api/zoos/<id>
#[RouteGet('<id>')]
public function getById(int $id = 0){}
// (该注释不用写)自动注册为 GET /v1-api/zoos/
#[RouteGet('')]
public function getData(){}
// (该注释不用写)自动注册为 POST /v1-api/zoos/
#[RoutePost('')]
public function postData(){}
// (该注释不用写)自动注册为 PUT /v1-api/zoos/<id>
#[RoutePut('<id>')]
public function putById(int $id = 0){}
// (该注释不用写)自动注册为 PATCH /v1-api/zoos/<id>
#[RoutePatch('<id>')]
public function patchById(int $id = 0){}
// (该注释不用写)自动注册为 DELETE /v1-api/zoos/<id>
#[RouteDelete('<id>')]
public function deleteById(int $id = 0){}
// (该注释不用写)自动注册为 POST /v1-api/zoos/
#[RouteDelete('')]
public function deleteData($id = null){}
}
RouteRestful风格案例 ¶
请求method | 接口路由 url | 对应controller方法 | 说明 |
---|---|---|---|
GET | /zoos | getData | 列出所有动物园 |
GET | /zoos/ID | getById | 获取某个指定动物园的信息 |
POST | /zoos | postData | 新建一个动物园 |
POST | /zoos/ID | postById | 更新一个动物园 |
PUT | /zoos/ID | putById | 更新某个指定动物园的信息(提供该动物园的全部信息) |
PATCH | /zoos/ID | patchById | 更新某个指定动物园的信息(提供该动物园的部分信息) |
DELETE | /zoos/ID | deleteById | 删除某个动物园 |
DELETE | /zoos | deleteData | 删除所有动物园 |
- restful 风格注册,增删改查无需注解,注解服务会自动生成
php
<?php
namespace addons\comA\moduleA\controller;
// restful 风格
#[RouteRestful('/comA.modulesA/v1-api/zoos')]
// 路由中间件
#[RouteMiddleware(\app\middleware\AaaaMiddle::class)]
#[RouteMiddleware(\app\middleware\BbbbMiddle::class)]
#[RouteMiddleware(\app\middleware\CcccMiddle::class)]
// 或者
#[RouteMiddleware([
\app\middleware\AaaaMiddle::class
\app\middleware\BbbbMiddle::class,
\app\middleware\CcccMiddle::class,
])]
class TestApi
{
// (该注释不用写)自动注册为 GET /v1-api/zoos/<id>
public function getById(int $id = 0){}
// (该注释不用写)自动注册为 GET /v1-api/zoos
public function getData(){}
// (该注释不用写)自动注册为 POST /v1-api/zoos
public function postData(){}
// (该注释不用写)自动注册为 PUT /v1-api/zoos/<id>
public function putById(int $id = 0){}
// (该注释不用写)自动注册为 PATCH /v1-api/zoos/<id>
public function patchById(int $id = 0){}
// (该注释不用写)自动注册为 DELETE /v1-api/zoos/<id>
public function deleteById(int $id = 0){}
// (该注释不用写)自动注册为 DELETE /v1-api/zoos
public function deleteData(){}
}
特殊用法 ¶
php
#[RouteGroup('/order_sys/business/act_wancheng')]
class OrderActions{
// 订单 - 完成
#[RoutePut(path: 'act_wancheng/<id>', pattern: ["id" => "\d+"], append: [
'handleType' => 'EveOrdersFinish'
])]
public function putById(int $id = 0){ }
}