Маршрутизация

Для маршрутизации используется symfony-компонент symfony/routing

Все маршруты приложения описываются в файле /app/routes.yaml

Также есть маршруты встроенные в ядро /vendor/lemurro/api-core/src/coreroutes.yaml с уже готовым функционалом

Пример маршрута

В файле /app/routes.yaml

Размещаем код:

single:
  path: /single
  controller: 'Lemurro\Api\App\Single\ControllerIndex'
  methods: [GET, OPTIONS]
  • Обратите внимание на обязательность метода OPTIONS т.к. все запросы к API выполняются через AJAX

Если у вас планируется очень много маршрутов, тогда имеет смысл создать каталог /app/Routes и в нём создавать yaml-файлы с маршрутами

Затем просто их все подключить в файле /app/routes.yaml

app_route_first:
   resource: 'app/Routes/first.yaml'

app_route_second:
   resource: 'app/Routes/second.yaml'

В каталоге /app

Создаем каталог нашего маршрута Single

В каталоге /app/Single

Создаем файл ControllerIndex.php

<?php
/**
 * Одиночный маршрут
 *
 * @version 06.06.2018
 * @author  Дмитрий Щербаков <atomcms@ya.ru>
 */

namespace Lemurro\Api\App\Single;

use Lemurro\Api\Core\Abstracts\Controller;

/**
 * Class ControllerIndex
 *
 * @package Lemurro\Api\App\Single
 */
class ControllerIndex extends Controller
{
    /**
     * Стартовый метод
     *
     * @version 06.06.2018
     * @author  Дмитрий Щербаков <atomcms@ya.ru>
     */
    public function start()
    {
        $this->response->setData((new ActionIndex($this->dic))->run());
        $this->response->send();
    }
}

В каталоге /app/Single

Создаем файл ActionIndex.php

<?php
/**
 * Одиночный маршрут
 *
 * @version 06.06.2018
 * @author  Дмитрий Щербаков <atomcms@ya.ru>
 */

namespace Lemurro\Api\App\Single;

use Lemurro\Api\Core\Abstracts\Action;

/**
 * Class ActionIndex
 *
 * @package Lemurro\Api\App\Single
 */
class ActionIndex extends Action
{
    /**
     * Выполним действие
     *
     * @return array
     *
     * @version 06.06.2018
     * @author  Дмитрий Щербаков <atomcms@ya.ru>
     */
    public function run()
    {
        return [
            'data' => 'Single route',
        ];
    }
}

Подробное описание ответа сервера можно найти здесь

Переходим в браузере по адресу

https://ваш-путь-до-api/single