Учебники

Yii — Поля

Переопределяя методы fields () и extraFields () , вы можете определить, какие данные можно вставить в ответ. Разница между этими двумя методами заключается в том, что первый определяет набор полей по умолчанию, который должен быть включен в ответ, в то время как последний определяет дополнительные поля, которые могут быть включены в ответ, если конечный пользователь запрашивает их через параметр запроса расширения. ,

Шаг 1 — Модифицируйте модель MyUser таким образом.

<?php
   namespace app\models;
   use app\components\UppercaseBehavior;
   use Yii;
   /**
   * This is the model class for table "user".
   *@property integer $id
   * @property string $name
   * @property string $email
   */
   class MyUser extends \yii\db\ActiveRecord {
      public function fields() {
         return [
            'id',
            'name',
            //PHP callback
            'datetime' => function($model) {
               return date("d:m:Y H:i:s");
            }
         ];
      }
      /**
      * @inheritdoc
      */
      public static function tableName() {
         return 'user';
      }
      /**
      * @inheritdoc
      */
      public function rules() {
         return [
            [['name', 'email'], 'string', 'max' => 255]
         ];
      }
      /**
      * @inheritdoc
      */
      public function attributeLabels() {
         return [
            'id' => 'ID',
            'name' => 'Name',
            'email' => 'Email',
         ];
      }
   }
?>

Помимо полей по умолчанию: id и name, мы добавили настраиваемое поле — datetime .

Шаг 2. В Postman запустите URL-адрес http: // localhost: 8080 / users .

Запустить URL

Шаг 3 — Теперь измените модель MyUser таким образом.

<?php
   namespace app\models;
   use app\components\UppercaseBehavior;
   use Yii;
   /**
   * This is the model class for table "user".
   *
   * @property integer $id
   * @property string $name
   * @property string $email
   */
   class MyUser extends \yii\db\ActiveRecord {
      public function fields() {
         return [
            'id',
            'name',
         ];
      }
      public function extraFields() {
         return ['email'];
      }
      /**
      * @inheritdoc
      */
      public static function tableName() {
         return 'user';
      }
      /**
      * @inheritdoc
      */
      public function rules() { 
         return [
            [['name', 'email'], 'string', 'max' => 255]
         ];
      }
      /**
      * @inheritdoc
      */
      public function attributeLabels() { 
         return [
            'id' => 'ID',
            'name' => 'Name',
            'email' => 'Email',
         ];
      }
   } 
?>

Обратите внимание, что поле электронной почты возвращается методом extraFields () .

Шаг 4 — Чтобы получить данные с помощью этого поля, запустите http: // localhost: 8080 / users? Expand = email .

Получить данные

Настройка действий

Класс yii \ rest \ ActiveController предоставляет следующие действия:

  • Индекс — список ресурсов страница за страницей

  • Просмотр — возвращает сведения об указанном ресурсе.

  • Создать — Создает новый ресурс

  • Обновление — обновляет существующий ресурс

  • Удалить — удаляет указанный ресурс

  • Параметры — возвращает поддерживаемые методы HTTP.

Индекс — список ресурсов страница за страницей

Просмотр — возвращает сведения об указанном ресурсе.

Создать — Создает новый ресурс

Обновление — обновляет существующий ресурс

Удалить — удаляет указанный ресурс

Параметры — возвращает поддерживаемые методы HTTP.

Все вышеперечисленные действия объявляются в методе actions ().

Чтобы отключить действия «удалить» и «создать», измените UserController следующим образом:

<?php
   namespace app\controllers;
   use yii\rest\ActiveController;
   class UserController extends ActiveController {
      public $modelClass = 'app\models\MyUser';
      public function actions() {
         $actions = parent::actions();
         // disable the "delete" and "create" actions
         unset($actions['delete'], $actions['create']);
         return $actions;
      }
   }
?>

Обработка ошибок

При получении запроса RESTful API, если в запросе произошла ошибка или что-то неожиданное произошло на сервере, вы можете просто вызвать исключение. Если вы можете определить причину ошибки, вы должны сгенерировать исключение вместе с правильным кодом состояния HTTP. Yii REST использует следующие статусы —

200 — ОК.

201 — ресурс был успешно создан в ответ на запрос POST. Заголовок Location содержит URL, указывающий на вновь созданный ресурс.

204 — Запрос был обработан успешно, и ответ не содержит содержимого.

304 — ресурс не был изменен.

400 — Плохой запрос.

401 — Ошибка аутентификации.

403. — Аутентифицированному пользователю не разрешен доступ к указанной конечной точке API.

404 — Ресурс не существует.

405 — Метод не разрешен.

415 — неподдерживаемый тип носителя.

422 — Проверка данных не удалась.

429 — Слишком много запросов.

500 — Внутренняя ошибка сервера.