Yii - Campos

Anulando fields() and extraFields()métodos, puede definir qué datos se pueden poner en una respuesta. La diferencia entre estos dos métodos es que el primero define el conjunto predeterminado de campos, que deben incluirse en la respuesta, mientras que el segundo define campos adicionales, que pueden incluirse en la respuesta si un usuario final los solicita a través delexpand parámetro de consulta.

Step 1 - Modificar el MyUser modelar de esta manera.

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

Además de los campos predeterminados: id y nombre, hemos agregado un campo personalizado: datetime.

Step 2 - En Postman, ejecute la URL http://localhost:8080/users.

Step 3 - Ahora, modifique el MyUser modelar de esta manera.

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

Tenga en cuenta que el campo de correo electrónico es devuelto por el extraFields() método.

Step 4 - Para obtener datos con este campo, ejecute http://localhost:8080/users?expand=email.

Personalizar acciones

los yii\rest\ActiveController clase proporciona las siguientes acciones:

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

  • View - Devuelve los detalles de un recurso especificado.

  • Create - Crea un nuevo recurso

  • Update - Actualiza un recurso existente

  • Delete - Elimina el recurso especificado

  • Options - Devuelve los métodos HTTP admitidos

Todas las acciones anteriores se declaran en el método de acciones ().

Para deshabilitar las acciones "eliminar" y "crear", modifique el UserController de esta manera -

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

Manejo de errores

Al obtener una solicitud de API RESTful, si hay un error en la solicitud o sucede algo inesperado en el servidor, simplemente puede lanzar una excepción. Si puede identificar la causa del error, debe lanzar una excepción junto con un código de estado HTTP adecuado. Yii REST utiliza los siguientes estados:

  • 200 - De acuerdo.

  • 201- Se creó correctamente un recurso en respuesta a una solicitud POST. El encabezado Ubicación contiene la URL que apunta al recurso recién creado.

  • 204 - La solicitud se manejó con éxito y la respuesta no tiene contenido.

  • 304 - El recurso no fue modificado.

  • 400 - Mala solicitud.

  • 401 - Error de autenticación.

  • 403 - El usuario autenticado no puede acceder al punto final de API especificado.

  • 404 - El recurso no existe.

  • 405 - Método no permitido.

  • 415 - Tipo de medio no admitido.

  • 422 - Falló la validación de datos.

  • 429 - Demasiadas solicitudes.

  • 500 - Error interno del servidor.