问题描述
对于使用 Yii2 构建 Restful API,有没有人有关于如何在控制器中添加新操作的好例子?谢谢.
For buiding restful API using Yii2, does anyone has good example on how to add a new action in a controller? Thanks.
推荐答案
我不确定您是要求 CRUD 之外的额外操作还是仅针对 CRUD,所以我针对这两种情况写了详细信息.
I am not sure if you are asking for extra actions beside CRUD or just for CRUD, so I write in details for both cases.
首先,框架包含\yii\rest\ActiveController
,提供典型的restful API操作和URL管理.
Firstly, the framework includes \yii\rest\ActiveController
that provides typical restful API operation and URL management.
基本上,控制器预定义 CRUD 操作如下:
Basically, the controller predefines the CRUD operations as followed:
POST/resource
-> actionCreate
-> 创建资源
POST /resource
-> actionCreate
-> Create the resource
GET/resource/{id}
-> actionView
-> 读取资源
GET /resource/{id}
-> actionView
-> Read the resource
PUT, PATCH/resource/{id}
-> actionUpdate
-> 更新资源
PUT, PATCH /resource/{id}
-> actionUpdate
-> Update the resource
DELETE/resource/{id}
-> actionDelete
-> 删除资源
DELETE /resource/{id}
-> actionDelete
-> Delete the resource
GET/resource
-> actionIndex
-> 列出所有资源
GET /resource
-> actionIndex
-> List all the resources
URL 路由规则和动作定义可以在 \yii\rest\ActiveController
、\yii\rest\UrlRule
和相应的 \yii\ 中找到休息\*动作
.
The URL routing rules and actions definition can be found in \yii\rest\ActiveController
, \yii\rest\UrlRule
and the respective \yii\rest\*Action
.
其次,如果你想在控制器中添加额外的restful API,你可以简单地编写你额外的actionXxxxx()
,并在配置中,在urlManager
下添加以下url规则代码>:
Secondly, if you want to add extra restful API in the controller, you can simply write your extra actionXxxxx()
, and in configuration, add the following url rules under urlManager
:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => ['resource'],
'pluralize' => false,
'extraPatterns' => [
'POST {id}/your_preferred_url' => 'xxxxx', // 'xxxxx' refers to 'actionXxxxx'
],
],
],
],
实际上,这将生成一个新的路由规则,请求 POST/resource/{id}/your_preferred_url
将调用您的 ResourceController 的 actionXxxxx
.
Effectively, this will generate a new routing rule, requesting POST /resource/{id}/your_preferred_url
will invoke actionXxxxx
of your ResourceController.
这篇关于Yii2 Restful API - 添加新操作的示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!