Yii - फ़ील्ड्स

ओवरराइड करके fields() and extraFields()तरीकों, आप परिभाषित कर सकते हैं कि डेटा को प्रतिक्रिया में क्या रखा जा सकता है। इन दो तरीकों के बीच का अंतर यह है कि पूर्व फ़ील्ड के डिफ़ॉल्ट सेट को परिभाषित करता है, जिसे प्रतिक्रिया में शामिल किया जाना चाहिए, जबकि बाद में अतिरिक्त फ़ील्ड्स को परिभाषित किया जाता है, जो प्रतिक्रिया में शामिल हो सकता है यदि कोई अंतिम उपयोगकर्ता उनके माध्यम से अनुरोध करता हैexpand क्वेरी पैरामीटर।

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

डिफ़ॉल्ट फ़ील्ड के अलावा: आईडी और नाम, हमने एक कस्टम फ़ील्ड जोड़ा है - datetime

Step 2 - पोस्टमैन में, URL चलाएं http://localhost:8080/users

Step 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() तरीका।

Step 4 - इस क्षेत्र के साथ डेटा प्राप्त करने के लिए, चलाएं http://localhost:8080/users?expand=email

क्रियाओं को अनुकूलित करना

yii\rest\ActiveController वर्ग निम्नलिखित क्रियाएं प्रदान करता है -

  • Index - पेज द्वारा संसाधनों की सूची पृष्ठ

  • View - एक निर्दिष्ट संसाधन का विवरण देता है

  • Create - एक नया संसाधन बनाता है

  • Update - किसी मौजूदा संसाधन को अपडेट करता है

  • Delete - निर्दिष्ट संसाधन हटाता है

  • Options - समर्थित HTTP विधियों को लौटाता है

उपरोक्त सभी क्रियाएं क्रिया विधि () में घोषित की गई हैं।

"डिलीट" और "क्रिएट" क्रियाओं को निष्क्रिय करने के लिए संशोधित करें 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;
      }
   }
?>

त्रुटियों को संभालना

रिस्टफुल एपीआई रिक्वेस्ट प्राप्त करते समय, अगर रिक्वेस्ट में कोई त्रुटि होती है या सर्वर पर कुछ अनपेक्षित होता है, तो आप केवल एक अपवाद फेंक सकते हैं। यदि आप त्रुटि के कारण की पहचान कर सकते हैं, तो आपको उचित HTTP स्थिति कोड के साथ एक अपवाद फेंक देना चाहिए। Yii REST निम्नलिखित स्थितियों का उपयोग करता है -

  • 200 - ठीक है।

  • 201- POST अनुरोध के जवाब में एक संसाधन सफलतापूर्वक बनाया गया था। लोकेशन हेडर में नए बनाए गए संसाधन की ओर इशारा करते हुए URL होता है।

  • 204 - अनुरोध सफलतापूर्वक संभाला गया था और प्रतिक्रिया में कोई सामग्री नहीं है।

  • 304 - संसाधन को संशोधित नहीं किया गया था।

  • 400 - बुरा अनुरोध।

  • 401 - प्रमाणीकरण विफल।

  • 403 - प्रमाणित उपयोगकर्ता को निर्दिष्ट एपीआई एंडपॉइंट तक पहुंचने की अनुमति नहीं है।

  • 404 - संसाधन मौजूद नहीं है।

  • 405 - विधि की अनुमति नहीं है।

  • 415 - असमर्थित मीडिया प्रकार।

  • 422 - डेटा सत्यापन विफल।

  • 429 - बहुत सारे अनुरोध।

  • 500 - आंतरिक सर्वर त्रुटि।