# Роутинг

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

* slim/app/routes_custom_before.php
* slim/app/routes_custom_after.php

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

```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/`.

---

**Documents**

- [Установка решения](https://docs.astdesign.ru/s/marketpro/doc/ustanovka-resheniya-Z8Q6r79liU)
- [FAQ перед покупкой](https://docs.astdesign.ru/s/marketpro/doc/faq-pered-pokupkoj-HPgKP7mWDT)
- [Общая настройка](https://docs.astdesign.ru/s/marketpro/doc/obshaya-nastrojka-Io6HZQaGXf)
- [Шаблон](https://docs.astdesign.ru/s/marketpro/doc/shablon-ylLAFZV3o8)
- [Главная страница](https://docs.astdesign.ru/s/marketpro/doc/glavnaya-stranica-7PwYozaVVo)
- [Магазины (склады)](https://docs.astdesign.ru/s/marketpro/doc/magaziny-sklady-7rEEZJrA45)
- [Каталог](https://docs.astdesign.ru/s/marketpro/doc/katalog-FpnYzZr900)
- [Поиск](https://docs.astdesign.ru/s/marketpro/doc/poisk-xsDdFVh5h0)
- [Текстовые страницы](https://docs.astdesign.ru/s/marketpro/doc/tekstovye-stranicy-jVtNXZv3T5)
- [Реклама и маркетинг](https://docs.astdesign.ru/s/marketpro/doc/reklama-i-marketing-iZkaCoxr5b)
- [Региональность](https://docs.astdesign.ru/s/marketpro/doc/regionalnost-bCuM9AOBNO)
- [Корзина](https://docs.astdesign.ru/s/marketpro/doc/korzina-Mh27pZA7v9)
- [Оформление заказа](https://docs.astdesign.ru/s/marketpro/doc/oformlenie-zakaza-VyvQjOQxZo)
- [Авторизация](https://docs.astdesign.ru/s/marketpro/doc/avtorizaciya-5HwEb1oDJG)
- [SEO и аналитика](https://docs.astdesign.ru/s/marketpro/doc/seo-i-analitika-d1Hw6c4YAM)
- [Уведомления](https://docs.astdesign.ru/s/marketpro/doc/uvedomleniya-SKDyjYg14J)
- [Мобильное приложение](https://docs.astdesign.ru/s/marketpro/doc/mobilnoe-prilozhenie-F5E0hT7TnN)
- [Обновление решения](https://docs.astdesign.ru/s/marketpro/doc/obnovlenie-resheniya-RRRgtxV5uH)
- [Для разработчика](https://docs.astdesign.ru/s/marketpro/doc/dlya-razrabotchika-WJePeJCmpy)
- [Интеграции](https://docs.astdesign.ru/s/marketpro/doc/integracii-D3DqjYOZYm)
- [Что делать, если что-то не работает](https://docs.astdesign.ru/s/marketpro/doc/chto-delat-esli-chto-to-ne-rabotaet-Q8L8sTVJF8)