Yii-restful-apis-action

提供:Dev Guides
移動先:案内検索

Yii-動作中のRESTful API

コントローラークラスは、一般的なRESTfulアクションを実装する yii \ rest \ ActiveController クラスから拡張されます。 $ modelClass プロパティを指定して、コントローラーがデータの操作に使用するモデルを認識するようにします。

ステップ1 *-controllersフォルダー内に *UserController.php というファイルを作成します。

<?php
   namespace app\controllers;
   use yii\rest\ActiveController;
   class UserController extends ActiveController {
      public $modelClass = 'app\models\MyUser';
   }
?>

次に、意味のあるHTTP動詞ときれいなURLでユーザーデータにアクセスして操作できるように、urlManagerコンポーネントを設定する必要があります。 APIがJSONのデータにアクセスできるようにするには、 request アプリケーションコンポーネントのパーサープロパティを構成する必要があります。

ステップ2 *- *config/web.php ファイルをこの方法で変更します-

<?php
   $params = require(__DIR__ . '/params.php');
   $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'components' => [
         'request' => [
           //!!! insert a secret key in the following (if it is empty) - this is
              //required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
           //send all mails to a file by default. You have to set
           //'useFileTransport' to false and configure a transport
           //for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'levels' => ['error', 'warning'],
               ],
            ],
         ],
         'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
               ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
         ],
         'request' => [
            'parsers' => [
               'application/json' => 'yii\web\JsonParser',
            ]
         ],
         'db' => require(__DIR__ . '/db.php'),
      ],
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello',
         ],
      ],
      'params' => $params,
   ];
   if (YII_ENV_DEV) {
     //configuration adjustments for 'dev' environment
      $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [
         'class' => 'yii\debug\Module',
      ];
      $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [
         'class' => 'yii\gii\Module',
      ];
   }
   return $config;
?>

最小限の労力で、ユーザーデータにアクセスするためのRESTful APIを構築しました。 APIには次のものがあります-

  • GET/users -すべてのユーザーをページごとにリストする
  • HEAD/users -ユーザーリストの概要情報を表示する
  • POST/users -新しいユーザーを作成します
  • GET/users/20 -ユーザーの詳細を返す20
  • HEAD/users/20 -ユーザー20の概要情報を表示
  • PATCH/users/20およびPUT/users/20 -ユーザー20の更新
  • DELETE/users/20 -ユーザーを削除20
  • *オプション/users *-エンドポイント/usersに関するサポートされている動詞を表示します
  • *オプション/users/20 *-エンドポイント/users/20に関するサポートされている動詞を表示します

Yiiはコントローラー名を自動的に複数形にすることに注意してください。

ステップ3 *-次に、Postmanを開き、 *http://localhost:8080/users をパンチして、「送信」をクリックします。 以下が表示されます。

Open Postman

  • ステップ4 *-新しいユーザーを作成するには、リクエストタイプをPOSTに変更し、名前と電子メールの2つの本文パラメーターを追加して、[送信]をクリックします。

新規ユーザーの作成

ステップ5 *- *fields パラメーターを使用して、結果に含めるフィールドを指定できます。 たとえば、URL http://localhost:8080/users?fields = id の場合、次のスクリーンショットに示すように、nameは id および name フィールドのみを返します。

フィールドを使用