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}'
записать как видно можно разными путями
Комментарии
Отправить комментарий