Для создания надежного 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