Роутинг
Для добавления своих путей в 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/.