devzyj / yii2-rest
The refactor and extension for `yiisoft/yii2-rest`.
Installs: 39
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: *
Requires (Dev)
- codeception/codeception: ~2.5
This package is auto-updated.
Last update: 2024-12-21 21:14:33 UTC
README
增强 yiisoft/yii2-rest 功能,在 Actions
中增加事件。
并且增加了批量操作的 Actions
。
Installation
The preferred way to install this extension is through composer.
Either run
composer require --prefer-dist "devzyj/yii2-rest" "~1.0.0"
or add
"devzyj/yii2-rest" : "~1.0.0"
to the require section of your application's composer.json
file.
Usage
// UserController.php class UserController extends \devzyj\rest\ActiveController { public $modelClass = 'app\models\User'; //public $searchModelClass` = 'app\models\UserSearch'; //public $notFoundMessage = 'User not found: `{id}`'; //public $allowedCount = 100; //public $manyResourcesMessage = 'The number of users requested cannot exceed `{allowedCount}`.'; } // config.php return [ 'components' => [ 'urlManager' => [ ...... 'rules' => [ [ 'class' => 'devzyj\rest\UrlRule', 'controller' => 'user', //'extraTokens' => ['{account}' => '<account:\\w[\\w]*>'], ] ] ], ], ];
调用方法,只列出部分新增的 API:
POST /users/validate
: 验证创建一个新用户时的数据PATCH /users/123/validate
andPUT /users/123/validate
: 验证更新用户 123 时的数据POST /users/batch
: 创建多个新用户,PATCH /users/batch
andPUT /users/batch
: 更新多个用户GET /users/10;11;12
: 显示用户 10, 11 和 12 的信息DELETE /users/10;11;12
: 删除用户 10, 11 和 12
创建多个新用户时的数据格式:
POST /users/batch
-d [
{"username": "example1", "email": "user1@example.com"},
{"username": "example2", "email": "user2@example.com"}
]
更新用户 123 和 456 时的数据格式:
PUT /users/batch
-d {
"123": {"username": "example1", "email": "user1@example.com"},
"456": {"username": "example2", "email": "user2@example.com"}
}
Controllers
- ActiveController
- 增加
$searchModelClass
查询数据的模型类名,如果不设置,则使用 [[$modelClass]] - 增加
$notFoundMessage
模型不存在时的错误信息 - 增加
$allowedCount
允许批量执行的资源个数 - 增加
$manyResourcesMessage
批量操作请求资源过多的错误信息 - 增加
checkActionAccess($action, $params = [])
检查用户是否有执行当前动作的权限 - 增加
checkModelAccess($model, $action, $params = [])
检查用户是否有执行数据模型的权限 - 废弃
checkAccess()
- 增加
UrlRule
- 增加
$extraTokens
额外的令牌列表。
Actions
修改的 Actions:
- IndexAction
- 增加
afterPrepareDataProvider
事件。
- 增加
- ViewAction
- 增加
afterPrepareModel
事件。
- 增加
- CreateAction
- 增加
beforeLoadModel
事件。 - 增加
afterLoadModel
事件。 - 增加
beforeProcessModel
事件。 - 增加
afterProcessModel
事件。
- 增加
- UpdateAction
- 增加
afterPrepareModel
事件。 - 增加
beforeLoadModel
事件。 - 增加
afterLoadModel
事件。 - 增加
beforeProcessModel
事件。 - 增加
afterProcessModel
事件。
- 增加
- DeleteAction
- 增加
afterPrepareModel
事件。 - 增加
beforeProcessModel
事件。 - 增加
afterProcessModel
事件。
- 增加
增加的 Actions:
- CreateValidateAction 创建新模型时,验证数据。
beforeLoadModel
afterLoadModel
beforeProcessModel
- UpdateValidateAction 更新模型时,验证数据。
afterPrepareModel
beforeLoadModel
afterLoadModel
beforeProcessModel
- BatchViewAction 显示多个模型。
afterPrepareModel
- BatchCreateAction 创建多个新模型。
beforeLoadModel
afterLoadModel
beforeProcessModel
afterProcessModel
afterProcessModels
- BatchUpdateAction 更新多个模型。
afterPrepareModel
beforeLoadModel
afterLoadModel
beforeProcessModel
afterProcessModel
afterProcessModels
- BatchDeleteAction 删除多个模型。
afterPrepareModel
beforeProcessModel
afterProcessModel
afterProcessModels
Events
afterPrepareDataProvider
在准备完数据源后触发的事件。afterPrepareModel
在准备完模型后触发的事件。beforeLoadModel
在模型加载数据前触发的事件,如果返回false
,则阻止模型加载数据。afterLoadModel
在模型成功加载完数据后触发的事件。beforeProcessModel
在处理模型前触发的事件,如果返回false
,则阻止处理模型。afterProcessModel
在成功处理完模型后触发的事件。afterProcessModels
在处理完模型列表后触发的事件。
在批量动作中会多次调用的事件:
afterPrepareModel
beforeLoadModel
afterLoadModel
beforeProcessModel
afterProcessModel
事件参数说明:
- 事件参数的类型为
ActionEvent
。 ActionEvent::$object
执行事件时的数据对像,以下列出的是对应事件中的对像类型。afterPrepareDataProvider
:\yii\data\ActiveDataProvider
afterPrepareModel
:\yii\db\ActiveRecord
beforeLoadModel
:Array
afterLoadModel
:\yii\db\ActiveRecord
beforeProcessModel
:\yii\db\ActiveRecord
afterProcessModel
:\yii\db\ActiveRecord
afterProcessModels
:\devzyj\rest\BatchResult
Behaviors
EagerLoadingBehavior
需要手动附加到IndexAction
,实现了在执行 [[Action::EVENT_AFTER_PREPARE_DATA_PROVIDER]] 事件时,即时加载指定的额外资源。SuppressResponseCodeBehavior
需要手动附加到config
中的components.response
,实现了根据查询参数 [[$suppressResponseCodeParam]],判断是否始终使用200
作为 HTTP 状态,并将实际的 HTTP 状态码作为内容的一部分包含在响应中。