【发布时间】:2013-06-09 03:09:47
【问题描述】:
我一直在阅读 edn 规范并希望将其集成到我的应用程序中。但是,我不知道如何在 clojure 和客户端之间传输 edn 请求。我们是否将内容类型的 application/edn 放在响应标头中并仅发送 prn 输出字符串?
【问题讨论】:
-
也许fogus的这个项目可以给你一个起点或一些指导:ring-edn。
我一直在阅读 edn 规范并希望将其集成到我的应用程序中。但是,我不知道如何在 clojure 和客户端之间传输 edn 请求。我们是否将内容类型的 application/edn 放在响应标头中并仅发送 prn 输出字符串?
【问题讨论】:
虽然尚未被IANA(2013 年 6 月 14 日)接受,但正确的 content-type 是application/edn。要提供 clojure 对象的有效字符串输出,请使用 (pr-str obj)。对于 Web 服务,编码和解码的方法取决于您的 Web 框架和您的需求。
Pedestal 支持通过使用 body-params 拦截器将 edn 解析为其请求映射上的 :edn-params 键。如果您的响应正文不是字符串,则会自动处理将 clojure 对象作为 edn 发送。有关内容协商,请参阅pedestal-content-negotiation。
对于环中间件,ring-edn 将 edn 解析为 :edn-params 键,但不进行任何出站修改。 ring-middleware-format 提供了将几种不同格式解析为 :body-params 键的功能,并拥有一系列有助于响应的中间件。还有一些其他像这样的环形中间件项目。
【讨论】: