为了使用Yii2构建restful API,有没有人有如何在控制器中添加新动作的好例子?感谢。
答案 0 :(得分:28)
我不确定你是否要求在CRUD旁边或仅仅为CRUD做额外的动作,所以我会详细说明这两种情况。
首先,该框架包含\yii\rest\ActiveController
,它提供典型的restful API操作和URL管理。
基本上,控制器预定义CRUD操作如下:
POST /resource
- > actionCreate
- >创建资源
GET /resource/{id}
- > actionView
- >阅读资源
PUT, PATCH /resource/{id}
- > actionUpdate
- >更新资源
DELETE /resource/{id}
- > actionDelete
- >删除资源
GET /resource
- > actionIndex
- >列出所有资源
可以在\yii\rest\ActiveController
,\yii\rest\UrlRule
和相应的\yii\rest\*Action
中找到网址路由规则和操作定义。
其次,如果您想在控制器中添加额外的restful API,您只需编写额外的actionXxxxx()
,并在配置中,在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
。
答案 1 :(得分:3)
以下是使用 Yii 2高级应用程序模板
的一个很好的示例https://github.com/deerawan/yii2-advanced-api
此项目的更多详细信息http://budiirawan.com/setup-restful-api-yii2/
如果需要,您也可以使用 Yii 2基本应用程序模板。 您需要做的是遵循这种文件夹结构(版本为v1)(Yii doc -A module may consist of sub-modules.) (GiovanniDerks - backend sub-modules)
-modules
--api
---v1
----controllers
----models