web-dev-qa-db-ja.com

Yii2 Restful API-新しいアクションを追加する例

Yii2を使用して安らかなAPIを構築するために、コントローラーに新しいアクションを追加する方法の良い例はありますか?ありがとう。

14
Qinjie

CRUDの横に追加のアクションを求めるのか、CRUDだけを求めるのかわからないので、両方のケースについて詳しく説明します。

まず、フレームワークには、典型的なRESTful API操作とURL管理を提供する_\yii\rest\ActiveController_が含まれています。

基本的に、コントローラーは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_にあります。

次に、コントローラーにRESTful APIを追加する場合は、追加のactionXxxxx()を記述し、構成でurlManagerの下に次のURLルールを追加します。

_'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が呼び出されます。

28
Victor Wong

これは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
3
Chanuka Asanka