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

947

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, создание модуля и контроллера

Новые статьи

Установка Webmin для Armbian (Orange Pi / Raspberry Pi)
Установка Webmin для Armbian (Orange Pi / Raspberry Pi)

Установка webmin для операционной системы Armbian (Orange Pi / Raspberry Pi). Install webmin for armbian.

Читать далее...
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/

Читать далее...
Yii2 advanced доступ из backend к frontend кэшу
Yii2 advanced доступ из backend к frontend кэшу

В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.

Читать далее...
C# паттерн проектирования Одиночка (Singleton)
C# паттерн проектирования Одиночка (Singleton)

Обзор и пример использования шаблона (паттерна) проектирования Одиночка (Singleton) на языке программирования C# (си шарп), достоинства и недостатки паттерна проектирования Синглтон

Читать далее...
Orange Pi / Raspberry Pi - установка и настройка Django в Linux Armbian
Orange Pi / Raspberry Pi - установка и настройка Django в Linux Armbian

Описание процесса установки и настройки python фреймворка django на одноплатных мини компьютерах orange pi / raspberry pi в операционной системе Linux Armbian.

Читать далее...

Это интересно

Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/

Читать далее...
Yii2 advanced доступ из backend к frontend кэшу
Yii2 advanced доступ из backend к frontend кэшу

В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.

Читать далее...
C# паттерн проектирования Одиночка (Singleton)
C# паттерн проектирования Одиночка (Singleton)

Обзор и пример использования шаблона (паттерна) проектирования Одиночка (Singleton) на языке программирования C# (си шарп), достоинства и недостатки паттерна проектирования Синглтон

Читать далее...
Yii2 установка и настройка advanced приложения
Yii2 установка и настройка advanced приложения

Описание процесса установки и настройки advanced приложения php фреймворка Yii2 с использование composer, рассмотрены возможные "подводные камни", возникающие при установке и настройке Yii2 advanced

Читать далее...
Подключение инфракрасного (ИК) пульта к Arduino
Подключение инфракрасного (ИК) пульта к Arduino

Описание процесса подключения инфракрасного дистанционного пульта управления к arduino, пример arduino скетча для работы с инфракрасным дистанционным пультом

Читать далее...