Как отличить запросы html и xhr / xml / json в Compojure / Ring? - PullRequest
2 голосов
/ 11 марта 2012

Как отличить запросы html от xhr / xml / json в Compojure / Ring, аналогичные response_to в Rails?

http://apidock.com/rails/ActionController/MimeResponds/respond_to

Ответы [ 3 ]

5 голосов
/ 21 апреля 2012

Предполагая, что вы хотите явно различать на основе заголовка Accept, а не просто возвращать соответствующий тип ответа согласно ответам Ankur, вы можете создать свою собственную функцию отправки, как показано ниже:вызвать его так:

(defpage "/foo" []
  (dispatch {:json (fn [] "{}")
             :html (fn [] "html")
             :default (fn [] "default")}))

Функция accept?, приведенная выше, является немного примитивной, но может служить отправной точкой.

2 голосов
/ 12 марта 2012

Вам потребуется использовать промежуточное программное обеспечение Ring, которое может обрабатывать MIME-тип Accept Header и преобразовывать значение данных карты ответов в соответствующий MIME.

Выезд: формат ring-middleware

1 голос
/ 12 марта 2012

В документации, на которую вы ссылаетесь,

Rails определяет желаемый формат ответа от HTTP Accept заголовок, представленный клиентом.

Ваш код также может посмотреть заголовок Accept и решить, что отправлять, основываясь на его содержимом, которое вы можете получить, проиндексировав объект запроса. Интересный вопрос заключается в том, существует ли простой способ анализа заголовка и его разбора.

Вы можете найти информацию об этом в ответах на Существует ли какая-либо библиотека Java для разбора заголовка HTTP Accept? .

...