MVC: добавить http-заголовок: контроллер или представление?

#model-view-controller #http #http-headers

#модель-представление-контроллер #http #http-заголовки

Вопрос:

Где правильное место для добавления http-заголовков в приложениях MVC: в контроллере или в представлении?

(Технически это можно сделать либо в контроллере, либо в представлении, но мне не ясно, какое решение лучше подходит для модели MVC)

Ответ №1:

Цель шаблона MVC — предложить четкое разделение обязанностей. Представление обрабатывает представление, контроллер обрабатывает события, а модель обеспечивает бизнес-логику. (Я понимаю, что многие веб-фреймворки не совсем соответствуют шаблону MVC. Django, например, называет себя MVT (или что-то в этом роде)).

Следовательно, поскольку HTTP заголовки являются деталью представления, они должны отображаться в представлении. Хорошо написанное приложение MVC позволило бы вам создавать представления, отличные от веб-версий (например, настольную версию), используя тот же контроллер и модель. Помещение заголовков в контроллер нарушило бы это четкое разделение.

Ответ №2:

Я думаю, это зависит от сценария. Например, контроллеру могут потребоваться определенные учетные данные безопасности, и если они отсутствуют в запросе / сеансе, клиенту будет отправлен Location: заголовок, направляющий их к представлению входа.

Представление может реализовывать HTTP-заголовок, отправляемый для управления такими вещами, как кэширование содержимого.