Контроллер - класс с методами (или обычный скрипт), который будет отработан при входящем запросе.
Контроллеры указываются в карте роутов при описании роута.
По умолчанию, контроллеры располагаются в папке модуля /bitrix/modules/artamonov.rest/lib/controllers/.
Но, также, контроллер может располагаться за пределами модуля, главное чтобы он был доступен через пространство имён.
Начиная с версии 2.3.0 можно указать путь к PHP-скрипту, вместо указания неймспейса контроллера.
В качестве примера, можно ознакомиться с нативными контроллерами, расположенными по пути /bitrix/modules/artamonov.rest/lib/controllers/native.
<?php
/**
* Copyright (c) 2019 Denis Artamonov
* Created: 1/13/19 5:23 PM
* Author: Denis Artamonov
*
* Пример контроллера
*/
namespace Artamonov\Rest\Controllers\Native;
class Example
{
public function __construct()
{
if (!config()->get('useExampleRoute')) {
response()->json('Showing examples is disabled in the settings');
}
}
public function _get()
{
$this->response(__FUNCTION__);
}
public function _post()
{
$this->response(__FUNCTION__);
}
public function _put()
{
$this->response(__FUNCTION__);
}
public function _delete()
{
$this->response(__FUNCTION__);
}
public function _head()
{
$this->response(__FUNCTION__);
}
private function response($action)
{
$response = [
'message' => 'Запрос выполнен успешно',
'date' => date('Y-m-d H:i:s'),
'controller' => __CLASS__,
'action' => $action,
'method' => request()->method(),
'header' => request()->header(),
'request' => request()->get(),
'server' => $_SERVER
];
journal()->add('request-response', ['request' => request()->get(), 'response' => $response]);
response()->json($response);
}
}