Yii - कार्रवाई में प्रतिष्ठित एपीआई

नियंत्रक वर्ग का विस्तार होता है yii\rest\ActiveControllerवर्ग, जो सामान्य क्रियात्मक कार्यों को लागू करता है। हम निर्दिष्ट करते हैं$modelClass संपत्ति ताकि नियंत्रक जानता है कि डेटा को हेरफेर करने के लिए किस मॉडल का उपयोग करना है।

Step 1 - नामक एक फ़ाइल बनाएँ UserController.php कंट्रोलर फ़ोल्डर के अंदर।

<?php
   namespace app\controllers;
   use yii\rest\ActiveController;
   class UserController extends ActiveController {
      public $modelClass = 'app\models\MyUser';
   }
?>

अगला हमें urlManager घटक सेट करने की आवश्यकता है, ताकि उपयोगकर्ता डेटा तक पहुँचा जा सके और सार्थक HTTP क्रियाओं और सुंदर URL के साथ हेरफेर किया जा सके। JSON में एपीआई एक्सेस डेटा को जाने देने के लिए, हमें पार्सर्स प्रॉपर्टी को कॉन्फ़िगर करना चाहिएrequest अनुप्रयोग घटक।

Step 2 - संशोधित करें config/web.php इस तरह से फाइल करें -

<?php
   $params = require(__DIR__ . '/params.php'); $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'components' => [
         'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is 
               //required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'levels' => ['error', 'warning'],
               ],
            ],
         ],
         'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
               ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
         ],
         'request' => [
            'parsers' => [
               'application/json' => 'yii\web\JsonParser',
            ]
         ],
         'db' => require(__DIR__ . '/db.php'),
      ],
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello',
         ],
      ],
      'params' => $params, ]; if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } return $config;
?>

न्यूनतम प्रयास के साथ, हमने उपयोगकर्ता डेटा तक पहुंचने के लिए केवल RESTful API बनाया है। एपीआई में शामिल हैं -

  • GET /users - सभी उपयोगकर्ताओं को पेज द्वारा सूचीबद्ध करें

  • HEAD /users - उपयोगकर्ता लिस्टिंग की अवलोकन जानकारी दिखाएं

  • POST /users - एक नया उपयोगकर्ता बनाएँ

  • GET /users/20 - उपयोगकर्ता 20 का विवरण लौटाएं

  • HEAD /users/20 - उपयोगकर्ता 20 की अवलोकन जानकारी दिखाएं

  • PATCH /users/ 20 and PUT /users/20 - उपयोगकर्ता को 20 अपडेट करें

  • DELETE /users/20 - उपयोगकर्ता को हटा दें 20

  • OPTIONS /users - समापन बिंदु / उपयोगकर्ताओं के बारे में समर्थित क्रिया दिखाएं

  • OPTIONS /users/20 - समापन बिंदु / उपयोगकर्ताओं / 20 के बारे में समर्थित क्रिया दिखाएं

ध्यान दें, कि Yii नियंत्रक नाम का स्वचालित रूप से बहुवचन करता है।

Step 3 - अब, पोस्टमैन खोलें, अंदर पंच करें http://localhost:8080/users, और "भेजें" पर क्लिक करें। आप निम्नलिखित देखेंगे।

Step 4 - एक नया उपयोगकर्ता बनाने के लिए, अनुरोध प्रकार को POST में बदलें, दो बॉडी पैरामीटर जोड़ें: नाम और ईमेल, और "भेजें" पर क्लिक करें।

Step 5 - आप का उपयोग कर सकते हैं fieldsयह निर्दिष्ट करने के लिए कि परिणाम में किन क्षेत्रों को शामिल किया जाना चाहिए। उदाहरण के लिए, URLhttp://localhost:8080/users?fields=id, नाम केवल वापस आ जाएगा id तथा name निम्नलिखित स्क्रीनशॉट में दिखाए गए अनुसार फ़ील्ड।