Маршрутизация
Для маршрутизации используется 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