1. Первое, что необходимо сделать для настройки rest api yii2 - разрешить GET, POST, PUT, DELETE запросы. Для этого создаем файл .htaccess в корне сайта со следующим содержимым (если файл .htaccess уже есть - пишем в него) :
<Limit GET POST PUT DELETE>
Order allow,deny
Allow from all
</Limit>
2. Далее, в gii создать модуль, например app\modules\api\Rest
3. В файле настроек (config/web.php) добавить секцию модуля:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'language' => 'ru-RU',
'components' => [
//.....
],
//Подключаемый модуль --->
'modules' => [
'api' => [
'class' => 'app\modules\api\Rest'
]
],
//<---
'params' => $params,
];
4. Для существующе модели необходимо создать контроллер (так же можно воспользоваться gii), например для модели Production создать контроллер app\modules\api\controllers\ProductionController, базовый класс (поле BaseClass) - \yii\rest\ActiveController. Если модели не существует, ее так же можно создать в gii на основе одной из таблиц базы данных, к которой подключено приложение.
5. В файле настроек (config/web.php) в секции urlManager внести следующие изменения:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'pluralize'=>false, //отключаем преобразование во множественную форму
'controller' => [
'api/production',
],
],
],
],
6. В созданном в пункте 4 контроллере необходимо установить значение переменной $modelClass, указать путь к классу модели
public $modelClass = 'app\models\Production';
После проведенных манипуляций мы можем просматривать, добавлять, редактировать и удалять продукцию выполняя GET, POST, PUT и DELETE запросы.
На этом базовая настройка REST API Yii2 закончена. Ниже на всякий случай привожу полное содержимое моих рабочих .htaccess файлов для Yii2
Для файла .htaccess в корне сайта:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
<Limit GET POST PUT DELETE>
Order allow,deny
Allow from all
</Limit>
Для файла .htaccess в папке web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Часть 0. Создание модели на основе таблицы базы данных
Часть 1. Базовая настройка REST API Yii2, создание модуля и контроллера