Ответ 1
Я не уверен, что вы просите дополнительных действий рядом с CRUD или просто для CRUD, поэтому я пишу детали для обоих случаев.
Во-первых, фреймворк включает \yii\rest\ActiveController
, который обеспечивает типичную оперативную работу API и управление URL-адресами.
В принципе, контроллер предопределяет выполняемые CRUD операции:
POST /resource
→ actionCreate
→ Создать ресурс
GET /resource/{id}
→ actionView
→ Прочитать ресурс
PUT, PATCH /resource/{id}
→ actionUpdate
→ Обновить ресурс
DELETE /resource/{id}
→ actionDelete
→ Удалить ресурс
GET /resource
→ actionIndex
→ Список всех ресурсов
Правила маршрутизации URL-адресов и определения действий можно найти в \yii\rest\ActiveController
, \yii\rest\UrlRule
и соответствующем \yii\rest\*Action
.
Во-вторых, если вы хотите добавить дополнительный дополнительный API в контроллер, вы можете просто написать свой дополнительный actionXxxxx()
и в конфигурации добавить следующие правила URL в 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
вызывать actionXxxxx
вашего ResourceController.