Yii - Campos

Substituindo fields() and extraFields()métodos, você pode definir quais dados podem ser colocados em uma resposta. A diferença entre esses dois métodos é que o primeiro define o conjunto padrão de campos, que deve ser incluído na resposta, enquanto o último define campos adicionais, que podem ser incluídos na resposta se um usuário final solicitá-los por meio doexpand parâmetro de consulta.

Step 1 - Modifique o MyUser modelar desta forma.

<?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',
         ];
      }
   }
?>

Além dos campos padrão: id e nome, adicionamos um campo personalizado - datetime.

Step 2 - No Postman, execute o URL http://localhost:8080/users.

Step 3 - Agora, modifique o MyUser modelar desta forma.

<?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',
         ];
      }
   } 
?>

Observe que o campo de e-mail é retornado pelo extraFields() método.

Step 4 - Para obter dados com este campo, execute http://localhost:8080/users?expand=email.

Personalização de ações

o yii\rest\ActiveController classe fornece as seguintes ações -

  • Index - Lista os recursos página por página

  • View - Retorna os detalhes de um recurso especificado

  • Create - Cria um novo recurso

  • Update - Atualiza um recurso existente

  • Delete - Exclui o recurso especificado

  • Options - Retorna os métodos HTTP suportados

Todas as ações acima são declaradas no método de ações ().

Para desativar as ações “excluir” e “criar”, modifique o UserController por aqui -

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

Tratamento de erros

Ao obter uma solicitação de API RESTful, se houver um erro na solicitação ou algo inesperado acontecer no servidor, você pode simplesmente lançar uma exceção. Se você puder identificar a causa do erro, deverá lançar uma exceção junto com um código de status HTTP adequado. Yii REST usa os seguintes status -

  • 200 - Ok.

  • 201- Um recurso foi criado com sucesso em resposta a uma solicitação POST. O cabeçalho Location contém a URL que aponta para o recurso recém-criado.

  • 204 - A solicitação foi tratada com sucesso e a resposta não contém conteúdo.

  • 304 - O recurso não foi modificado.

  • 400 - Pedido incorreto.

  • 401 - A autenticação falhou.

  • 403 - O usuário autenticado não tem permissão para acessar o endpoint de API especificado.

  • 404 - O recurso não existe.

  • 405 - Método não permitido.

  • 415 - Tipo de mídia não compatível.

  • 422 - A validação de dados falhou.

  • 429 - Muitos pedidos.

  • 500 - Erro interno do servidor.