yii2
आराम करने वाला एपीआई
खोज…
बाकी आपी से शुरू करें
हमारे पास एक तालिका है जिसमें देश शामिल हैं इसलिए हम एक मॉडल बनाते हैं जिसे देश सूची मॉडल कहा जाता है
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "countrylist".
*
* @property integer $id
* @property string $iso
* @property string $name
* @property string $nicename
* @property string $iso3
* @property integer $numcode
* @property integer $phonecode
*/
class Countrylist extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'countrylist';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['iso', 'name', 'nicename', 'phonecode'], 'required'],
[['numcode', 'phonecode'], 'integer'],
[['iso'], 'string', 'max' => 2],
[['name', 'nicename'], 'string', 'max' => 80],
[['iso3'], 'string', 'max' => 3]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'iso' => 'Iso',
'name' => 'Name',
'nicename' => 'Nicename',
'iso3' => 'Iso3',
'numcode' => 'Numcode',
'phonecode' => 'Phonecode',
];
}
}
और मैं उसके लिए रेस्ट वेब्स सर्विस बनाते हैं, हम रेस्टापी के लिए एक नियंत्रक बनाते हैं और हमारे मॉडल के लिए मॉडलक्लास चर सेट करते हैं।
<?php
namespace app\controllers;
use yii\rest\ActiveController;
use Yii;
class CountrylistController extends ActiveController
{
public $modelClass='app\models\Countrylist';
}
?>
restapi का उपयोग करने के लिए हमें बहुत सुंदर यूआरएल चाहिए और
हम सुंदर url के लिए इस नियम को जोड़ते हैं
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
['class'=>'yii\rest\UrlRule','controller'=>'countrylist']
],
],
उसके बाद हम एक उदाहरण के रूप में अपने बाकी एपी का परीक्षण कर सकते हैं
http: // लोकलहोस्ट / कंट्रीलिस्ट हमें काउंटियों की सूची देता है।
बाकी एपीआई वाई 2 के डिफ़ॉल्ट कार्यों को कैसे ओवरराइड करें
एक उदाहरण के रूप में आप अपने डिफ़ॉल्ट सूचकांक क्रिया में पृष्ठांकन को अक्षम करना चाहते हैं और सूचकांक में सभी परिणाम प्राप्त करते हैं। आप ऐसा कैसे कर सकते हैं? यह आसान है। आपको अपने कंट्रोलर में इंडेक्स एक्शन को इस तरह से ओवरराइड करना चाहिए:
public function actions() {
$actions = parent::actions();
unset($actions['index']);
return $actions;
}
public function actionIndex() {
$activeData = new ActiveDataProvider([
'query' => \common\models\Yourmodel::find(),
'pagination' => false
]);
return $activeData;
}
विशिष्ट कार्रवाई के लिए सामग्री-प्रकार को ओवरराइड करें
मामले का उपयोग करें: सिर्फ एक क्रिया जो एक सादा (पाठ) सामग्री को वापस करना चाहिए, वह है:
public function actionAsXML()
{
$this->layout = false;
Yii::$app->response->format = Response::FORMAT_XML;
return ['aaa' => [1, 2, 3, 4]];;
}
पूर्व-परिभाषित प्रतिक्रिया प्रारूप हैं:
- FORMAT_HTML
- FORMAT_XML
- FORMAT_JSON
- FORMAT_JSONP
- FORMAT_RAW
बॉक्स के बाहर text/plain
लिए कोई माइम प्रकार नहीं है, इसके बजाय इसका उपयोग करें:
public function actionPlainText()
{
$this->layout = false;
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->headers->add('Content-Type', 'text/plain');
return $this->render('plain-text'); // outputs template as plain text
}