Yii - RESTful API'ler İş Başında

Denetleyici sınıfı, yii\rest\ActiveControllerortak RESTful eylemlerini uygulayan sınıf. Biz belirtiyoruz$modelClass özelliği, böylece denetleyici verileri işlemek için hangi modeli kullanacağını bilir.

Step 1 - adlı bir dosya oluşturun UserController.php denetleyiciler klasörünün içinde.

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

Daha sonra, kullanıcı verilerine anlamlı HTTP fiilleri ve güzel URL'lerle erişilebilmesi ve manipüle edilebilmesi için urlManager bileşenini kurmamız gerekir. API erişim verilerine JSON'da izin vermek için, öğenin ayrıştırıcı özelliğini yapılandırmalıyız.request uygulama bileşeni.

Step 2 - Değiştirin config/web.php bu şekilde dosyala -

<?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;
?>

Minimum çaba ile, kullanıcı verilerine erişmek için bir RESTful API oluşturduk. API'ler şunları içerir -

  • GET /users - tüm kullanıcıları sayfa sayfa listeleyin

  • HEAD /users - kullanıcı girişine genel bakış bilgilerini göster

  • POST /users - yeni bir kullanıcı oluşturun

  • GET /users/20 - kullanıcının ayrıntılarını iade edin 20

  • HEAD /users/20 - 20 kullanıcının genel bilgilerini gösterir

  • PATCH /users/ 20 and PUT /users/20 - kullanıcıyı güncelleyin 20

  • DELETE /users/20 - kullanıcıyı sil 20

  • OPTIONS /users - uç nokta / kullanıcılarla ilgili desteklenen fiilleri gösterin

  • OPTIONS /users/20 - uç nokta / kullanıcılar / 20 ile ilgili desteklenen fiilleri göster

Yii'nin denetleyici adını otomatik olarak çoğullaştırdığına dikkat edin.

Step 3 - Şimdi, Postacı'yı aç, yumruk at http://localhost:8080/usersve "Gönder" i tıklayın. Aşağıdakileri göreceksiniz.

Step 4 - Yeni bir kullanıcı oluşturmak için, istek türünü POST olarak değiştirin, iki gövde parametresi ekleyin: ad ve e-posta ve "Gönder" üzerine tıklayın.

Step 5 - Kullanabilirsiniz fieldssonuca hangi alanların dahil edileceğini belirtmek için parametre. Örneğin, URLhttp://localhost:8080/users?fields=id, isim sadece id ve name aşağıdaki ekran görüntüsünde gösterildiği gibi alanlar.