Yii2 Rest Api
Инфо http://developer.uz/blog/restful-api-in-yii2/
Исходники
https://github.com/des1roer/yii2test
На самом деле сложности никакой нет
Что нужно запомнить - в rules апи прописывается сверху
========
Блок с UrlRule должен быть выше блока ЧПУ
Про версионность
========
Т.е. в первом варианте будет путь http://yii2test/api/v1/unit
во втором http://yii2test/api_v1/unit
Про версионированние
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/rest-versioning.md
Сам модуль выглядит как на скрине выше.
В контроллере все достаточно просто
-------------
Про модель -
------------
Блок extraFields -
это некоторые поля, получить данные можно добавив в пути параметр expand='{parametr}'
записать как видно можно разными путями
Исходники
https://github.com/des1roer/yii2test
На самом деле сложности никакой нет
Что нужно запомнить - в rules апи прописывается сверху
В config/web.php
========
<?
'urlManager' => [
// Disable index.php
'showScriptName' => false,
'enableStrictParsing' => true,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => array(
['class' => 'yii\rest\UrlRule', 'controller' => ['api/v1/unit'], 'pluralize' => false],
['class' => 'yii\rest\UrlRule', 'controller' => ['api_v1/unit'], 'pluralize' => false],
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
========Блок с UrlRule должен быть выше блока ЧПУ
Про версионность
========
<?
'modules' => [
'api' => [
'class' => 'app\modules\api\Module',
'modules' => [
'v1' => [
'class' => 'app\modules\api\modules\v1\Module',
],
],
],
'api_v1' => [
'class' => 'app\modules\api\modules\v1\Module',
],
],
========Т.е. в первом варианте будет путь http://yii2test/api/v1/unit
во втором http://yii2test/api_v1/unit
Про версионированние
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/rest-versioning.md
Сам модуль выглядит как на скрине выше.
В контроллере все достаточно просто
-------------
<?php namespace app\modules\api\modules\v1\controllers; use app\models\Unit; use yii\rest\ActiveController; class UnitController extends ActiveController { public $allowedActions = ['index', 'view', 'update', 'create', 'delete']; public $modelClass = Unit::class; }-------------
Про модель -
------------
<?
public function extraFields()
{
return [
'items' => function () {
return $this->id;
},
'parentApi'
];
}
public function getParentApi()
{
return self::find()->where(['id' => $this->parent_id])->one();
}
------------
Блок extraFields -
это некоторые поля, получить данные можно добавив в пути параметр expand='{parametr}'
записать как видно можно разными путями


Комментарии
Отправить комментарий