Для создания надежного API с использованием Yii2, есть ли у кого-нибудь хороший пример того, как добавить новое действие в контроллер? Спасибо.
Yii2 Restful API - пример добавления нового действия
Ответ 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.
Ответ 2
Вот хороший пример с использованием расширенного шаблона Yii 2
https://github.com/deerawan/yii2-advanced-api
подробнее об этом проекте http://budiirawan.com/setup-restful-api-yii2/
также вы можете использовать шаблон шаблона Yii 2, если хотите. что вам нужно сделать, следуйте такой структуре папок (v1 для версии) (Yii doc -A модуль может состоять из подмодулей.) (GiovanniDerks - базовые подмодули)
-modules
--api
---v1
----controllers
----models