Базовая настройка REST API Yii2, создание модуля и контроллера

Первое, что необходимо сделать для настройки rest api yii2 - разрешить GET, POST, PUT, DELETE запросы.

Для этого создаемсоздаемсоздаемсоздаемсоздаем файл .htaccess в корне сайта со следующим сососодержимымсодержимымсодержимым (если файл .htaccess уже есть - пишем в него) :

```plaintext Order allow,deny Allow from all ``` 2\. Далееееееееее, в [gii](http://dev58.ru/article/yii2_gii_code_generator) создать модуль, напримернапримернапримернапримернапример **app\\modules\\api\\Rest** 3\. В файле настроекнастроекнастроекнастроекнастроек (config/web.php) добавитьвитьвитьвитьвить секциюкциюкциюкциюкцию модуля: ```plaintext $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 вввнестивнестивнести следующие изизизмененияненияненияизмененияненияненияизменениянениянения: ```plaintext 'urlManager' ===>>>=>>>=>>> [ 'enablePrettyUrl' ===>>>=>>>=>>> true, 'showScriptName' ===>>>=>>>=>>> false, 'rules' ===>>>=>>>=>>> [ [ 'class' ===>>>=>>>=>>> 'yii\rest\UrlRule', 'pluralize'=>false, //отключаемключаемключаемключаемключаем преобразованиеиеиеиеие во множественнуюжественнуюжественнуюжественнуюжественную форму 'controller' ===>>>=>>>=>>> [ 'api/production', ], ], ], ], ``` 6\. В созданном в пунктектектектекте 4 контроллерконтроллерккконтроллереконтроллереконтроллерконтроллерконтроллеронтроллере необходимонеобходимонеобходимонеобходимонеобходимо установитьвитьвитьвитьвить значениеначениеначениеначениеначение переменной $modelClass, указать путь к классклассккклассуклассуклассу моделимоделимоделиииии ```plaintext public $modelClass = 'app\models\Production'; ``` После проведенных манипуляций мы можемжемжемжемжем просматривать, добавлять, редактировать и удалять продукциюкциюкциюкциюкцию вввыполняявыполняявыполняя GET, POST, PUT и DELETE запросы. На этом базоваяваяваяваявая нананастройкакаканастройкакаканастройкакака REST API Yii2 закончена. Нижежежежеже на всякийкийкийкийкий случай привожувожувввожувожувввожу полное содержимое моих рабочихихихихих _.htaccess_ файловвввв для Yii2 Для файла _.htaccess_ в кккорнененекорнененекорненене сайта: ```plaintext 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 Order allow,deny Allow from all ``` Для файла _.htaccess_ в папкекекекеке _web_ ```plaintext RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php ``` [Часть 0. Создание модели на основевевевеве таблицтаблицтаблицыицыицытаблицыицыицытаблицыицыицы базы данных](http://dev58.ru/articles/yii2_sozdanie_modeli_na_osnove_tablici_bazy_dannych) Часть 1. Базоваяваяваяваявая нананастройкакаканастройкакаканастройкакака REST API Yii2, создание модуля и контроллерконтроллерккконтроллераконтроллераконтроллерконтроллерконтроллеронтроллера