Контроллеры (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