2013-06-12 2 views
9

Я читал спецификацию edn и хочу интегрировать ее в свое приложение. Тем не менее, я не знаю, как передавать запросы edn между clojure и клиентом. Мы помещаем приложение типа контента/edn в заголовок ответа и просто отправляем строку вывода prn?Есть ли какой-то канонический ответ edn, который мы можем использовать для кольца?

+3

Возможно, этот проект fogus может дать вам отправную точку или некоторое руководство: [ring-edn] (https://github.com/fogus/ring-edn). –

+0

См. Также [ring-middleware-format] (https://github.com/ngrunwald/ring-middleware-format). – noahlz

ответ

3

Хотя он еще не принят IANA (14 июня 2013 г.), правильный тип контента - application/edn. Чтобы предоставить действительный вывод строки вашего объекта clojure, используйте (pr-str obj). Для веб-службы метод кодирования и декодирования зависит от вашей веб-инфраструктуры и ваших потребностей.

Pedestal поддерживает парсинг edn в ключ :edn-params по запросу с помощью его перехватчика body-params. Отправка объектов clojure в виде edn обрабатывается автоматически, если ваши тела ответа не являются строками. Для согласования содержания см. pedestal-content-negotiation.

Для кольцевого промежуточного программного обеспечения ring-edn анализирует edn на :edn-params ключ, но не выполняет исходящую модификацию. ring-middleware-format предоставляет синтаксический анализ нескольких различных форматов в ключ :body-params и содержит коллекцию промежуточных продуктов, которые также могут быть полезны для ответов. Есть несколько других проектов промежуточного программного обеспечения, подобных этому.