Skip to main content

Контроллеры (Controllers)

Определение:

Контроллеры отвечают за проверку запроса, обслуживание данных запроса и построение ответа. Проверка и ответ происходят в отдельных классах, но запускаются из контроллера.

Принципы:

  • Контроллеры НЕ ДОЛЖНЫ ничего знать о бизнес-логике или о каком-либо бизнес-объекте.
  • Контроллеру СЛЕДУЕТ выполнять только следующие работы:
    • Чтение данных запроса (пользовательский ввод)
    • Вызов действия (и передача ему данных запроса)
    • Построение ответа (обычно ответ создается на основе данных, собранных при вызове Action)
  • Контроллеры НЕ ДОЛЖНЫ иметь какую-либо форму бизнес-логики. (Он ДОЛЖЕН вызывать действие для выполнения бизнес-логики).
  • Контроллеры НЕ ДОЛЖНЫ вызывать задачи. Они МОГУТ вызывать только Действия. (И уже в свою очередь действия могут вызывать задачи).
  • Контроллеры МОГУТ вызываться только конечными точками маршрутов.
  • Каждая папка пользовательского интерфейса контейнера (WEB, API, CLI) будет иметь свои собственные контроллеры.

В разработке приложения не следует напрямую вызвать действие из маршрута. Уровень контроллера помогает повторно использовать действие в нескольких пользовательских интерфейсах (WEB и API), поскольку он не создает ответ, и это уменьшает количество дублирования кода в разных пользовательских интерфейсах.

Вот пример ниже:

  • WEB: Маршрут WEB-ROUTE-1 Контроллер WEB-CONTROLLER-1 Действие ACTION-1.
  • API: Маршрут API-ROUTE-1 Контроллер API-CONTROLLER-1 Действие ACTION-1.

Как вы можете видеть в приведенном выше примере, действие ACTION-1 использовалось обоими маршрутами WEB-ROUTE-1 и API-ROUTE-1 с помощью уровня контроллеров, который находится в каждом пользовательском интерфейсе.