RESTful API на OctoberCMS. Начало

Laravel
4 мин. на чтение

Рано или поздно вам придется это сделать, это делают все, даже если изначально это не планировалось. Какой-нибудь фронэндер подойдет к вам и скажет:
– А я могу по ajax получить все записи блога с админки?

И да, мы сегодня сделаем endpoint и собственно сам API или REST API или RESTful API… да господи, всем насрать, давайте делать.

Оговорюсь, что мы пока говорим про открытый API без всяких JWT, нам просто нужен какой-то свой route и чтобы по обращению на него GET запросом были возвращены все записи модели. Пока так, без усложнений. Одно но, но раз уж мы говорим про Модели, то свой плагин вы явно уже создали. Без своего плагина или расширения другого плагина (и это тоже плагин) у вас ничего не выйдет.

Согласно документации OctoberCMS вы можете в корне плагина, а корень у него – папка, где лежит Plugin.php файл создать файл с именем routes.php

Обращаю внимание, что все тут чувствительно к регистру, так что если с маленькой буквы, пишите с маленькой, не создавайте сложности на пустом месте 🤗

Структура файла routes.php типична для Laravel-based систем, например:

<?php

Route::get(
    'api/v1/tariffs',
    array(
        'uses' => 'Author\Plugin\Controllers\ControllerName@someMethod'
    )
);

Если очень коротко рассмотреть что тут написано: мы создали новый роут, который принимает GET запрос на endpoint api/v1/tariffs, а при обращении на него пытается вызвать некий контроллер Author\Plugin\Controllers\ControllerName а в нем метод someMethod.

Давайте теперь опишем этот метод в контроллере, в нашем случае мы хотим из некоторой модели, пусть она будет называться Tariff, а т.к. имя класса совпадает с именем контроллера мы еще сделаем use с алиасом as.

Итак, в начале контроллера напишем
use Author\PluginName\Models\Tariff as TariffModel;

и собственно сам метод, который у нас someMethod называется

<?php

public function someMethod()
    {
        $tariffs = TariffModel::all();

        return response()->json($tariffs);
        
    }

И собственно все! Можно спокойно обращаться на api/v1/tariffs и увидеть прекрасный, отформатированный для лучшего понимания json данных из вашей модели.

Далее вы можете с этого метода извращаться как вашей душе угодно:

  1. фильтровать поля через Eloquent;
  2. использовать какие-то middleware как проверка на авторизацию, можно подключать JWT, благо плагины готовые есть;
  3. можно добавить L5 Swagger и получить авто документацию на API;
  4. добавить какие-то кеши на данные и многое-многое-многое другое.

 

Ihor Chyshkala
Пишу статьи про ИТ в свободное от работы время.
Оцените автора
Авторский блог Игоря Чишкалы
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.