Роутинг

Для добавления своих путей в API вы можете использовать файлы, которые не затрагиваются обновлениями:

  • slim/app/routes_custom_before.php

  • slim/app/routes_custom_after.php

Если таких файлов нет, то вы можете их создать. Пример содержимого файла:

<?php
declare(strict_types=1);

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Interfaces\RouteCollectorProxyInterface as Group;

if ($group) {
    global $app;
    $group->group('/example/', function (Group $group) use ($app) {
        $group->get('', function (Request $request, Response $response) {
            $data = ['example' => 'it works!'];
            $response->getBody()->write(json_encode($data));
            return $response->withHeader('Content-Type', 'application/json');
        });
    });
}

Какой файл выбрать

Оба файла подключаются внутри одной группы маршрутов, но в разных местах:

  • routes_custom_before.php — до штатных маршрутов решения. Ваш маршрут объявляется первым, поэтому им можно перехватить штатный адрес и отдать свой ответ.

  • routes_custom_after.php — после штатных. Приоритет у решения: если адрес уже занят, ваш обработчик не сработает.

По умолчанию берите after — так обновления решения не столкнутся с вашими адресами. before нужен только тогда, когда штатное поведение надо именно подменить.

Адрес получится с префиксом /api

Базовый путь приложения — /api, он задан для всех маршрутов. Поэтому группа /example/ из примера доступна по адресу https://site.ru/api/example/, а не https://site.ru/example/. Проверить проще всего браузером: откройте адрес и убедитесь, что пришёл ваш JSON.

Витрина обращается к API по этому же префиксу, так что называйте свои маршруты так, чтобы они не совпали с будущими штатными: например, начинайте с /custom/.