Я читал спецификацию edn и хочу интегрировать ее в свое приложение. Тем не менее, я не знаю, как передавать запросы edn между clojure и клиентом. Мы помещаем приложение типа контента/edn в заголовок ответа и просто отправляем строку вывода prn?Есть ли какой-то канонический ответ edn, который мы можем использовать для кольца?
ответ
Хотя он еще не принят 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
и содержит коллекцию промежуточных продуктов, которые также могут быть полезны для ответов. Есть несколько других проектов промежуточного программного обеспечения, подобных этому.
Возможно, этот проект fogus может дать вам отправную точку или некоторое руководство: [ring-edn] (https://github.com/fogus/ring-edn). –
См. Также [ring-middleware-format] (https://github.com/ngrunwald/ring-middleware-format). – noahlz