Я создаю веб-приложение Sinatra, которое я хотел бы использовать mime-тип application/xhtml+xml
для всех обслуживаемых веб-страниц. Я использую Builder в качестве механизма шаблонов. Обратите внимание, что приложение также будет обслуживать application/xml
для различных интерфейсов api AJAX, также используя механизм шаблонов Builder, а также text/css
с использованием механизма шаблонов scss.Обслуживание XHTML с Sinatra
Я заметил, что созданные веб-страницы получают тип контента text/html
, тогда как интерфейсы api получают вместо этого тип контента application/xml
. Однако я не знаю, как определяется тип mime; наличие метки html
? использование макета или нет? В любом случае, я хотел бы, чтобы приложение выдало тип mcetype application/xhtml+xml
вместо типа mime text/html
.
Я знаю, что я могу указать тип mime с вызовом content_type
, но я бы хотел воздержаться от необходимости этого в каждой функции маршрутизации. Есть ли способ установить тип mime по умолчанию для данного механизма шаблонов? Или можно управлять типом mime с помощью имени файла вида? Отличается ли Tilt любыми средствами для управления типом MIME?
Документы Sinatra объясняют способ настройки типов mime на основе расширения файла: [Readme - Mime types] (http://www.sinatrarb.com/intro#Mime%20Types). Вы могли бы использовать блок 'before do' и задавать' content_type' таким образом, но я не уверен, что это лучший способ выполнить это. –
Кроме того, я добавил тег 'ruby' на ваш пост, вы можете получить больше трафика таким образом. –
Если вы не меняете его где-то, _all_-запросы с использованием Builder будут иметь 'application/xml' в качестве типа содержимого. У вас есть 'before' или after block, где вы устанавливаете' content_type'? – matt