Yii - Champs

En remplaçant fields() and extraFields()méthodes, vous pouvez définir quelles données peuvent être placées dans une réponse. La différence entre ces deux méthodes est que la première définit l'ensemble de champs par défaut, qui doit être inclus dans la réponse, tandis que la seconde définit des champs supplémentaires, qui peuvent être inclus dans la réponse si un utilisateur final en fait la demande via leexpand paramètre de requête.

Step 1 - Modifier le MyUser modèle de cette façon.

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

Outre les champs par défaut: id et nom, nous avons ajouté un champ personnalisé - datetime.

Step 2 - Dans Postman, exécutez l'URL http://localhost:8080/users.

Step 3 - Maintenant, modifiez le MyUser modèle de cette façon.

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

Notez que le champ e-mail est renvoyé par le extraFields() méthode.

Step 4 - Pour obtenir des données avec ce champ, exécutez http://localhost:8080/users?expand=email.

Personnalisation des actions

le yii\rest\ActiveController class fournit les actions suivantes -

  • Index - Répertorie les ressources page par page

  • View - Renvoie les détails d'une ressource spécifiée

  • Create - Crée une nouvelle ressource

  • Update - Met à jour une ressource existante

  • Delete - Supprime la ressource spécifiée

  • Options - Renvoie les méthodes HTTP prises en charge

Toutes les actions ci-dessus sont déclarées dans la méthode actions ().

Pour désactiver les actions «supprimer» et «créer», modifiez le UserController de cette façon -

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

Traitement des erreurs

Lors de l'obtention d'une requête API RESTful, s'il y a une erreur dans la requête ou si quelque chose d'inattendu se produit sur le serveur, vous pouvez simplement lever une exception. Si vous pouvez identifier la cause de l'erreur, vous devez lever une exception avec un code d'état HTTP approprié. Yii REST utilise les états suivants -

  • 200 - OK.

  • 201- Une ressource a été créée avec succès en réponse à une demande POST. L'en-tête Location contient l'URL pointant vers la ressource nouvellement créée.

  • 204 - La demande a été traitée avec succès et la réponse ne contient aucun contenu.

  • 304 - La ressource n'a pas été modifiée.

  • 400 - Mauvaise demande.

  • 401 - L'authentification a échoué.

  • 403 - L'utilisateur authentifié n'est pas autorisé à accéder au point de terminaison d'API spécifié.

  • 404 - La ressource n'existe pas.

  • 405 - Méthode non autorisée.

  • 415 - Type de support non pris en charge.

  • 422 - La validation des données a échoué.

  • 429 - Trop de demandes.

  • 500 - Erreur de serveur interne.