Контроллеры

Контроллер - класс с методами (или обычный скрипт), который будет отработан при входящем запросе.

Контроллеры указываются в карте роутов при описании роута. По умолчанию, контроллеры располагаются в папке модуля /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);
    }
}

Last updated