clojure - 我们可以用某种形式的规范edn响应来响吗?

标签 clojure ring edn

我一直在阅读edn规范,并希望将其集成到我的应用程序中。但是,我不知道如何在clojure和客户端之间传输edn请求。我们是否将内容类型的application/edn放在响应 header 中,然后仅发送prn输出字符串?

最佳答案

尽管IANA尚未接受它(2013年6月14日),但是正确的content-type是application/edn。要提供clojure对象的有效字符串输出,请使用(pr-str obj)。对于Web服务,编码和解码的方法取决于您的Web框架和您的需求。

Pedestal支持使用其:edn-params拦截器在其请求映射上将edn解析为body-params key 。如果您的响应主体不是字符串,则将自动处理将Clojure对象作为edn发送。有关内容协商,请参见pedestal-content-negotiation

对于环形中间件,ring-edn将edn解析为:edn-params key ,但不进行任何出站修改。 ring-middleware-format可以将几种不同的格式解析为:body-params key ,并且具有一组中间件,这些中间件也可以对响应有所帮助。那里还有其他一些这样的环形中间件项目。

关于clojure - 我们可以用某种形式的规范edn响应来响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075094/

相关文章:

clojure - 如何将 *data-readers* 与 edn 一起使用?

clojure - 调用从 EDN 文件中读取的函数

clojure - Clojure 状态如何工作?

clojure - 如何绑定(bind)匹配的 :or to a variable in core. 匹配

clojure - Compojure:在路由处理中访问基本身份验证变量

clojure - 如何向 leiningen 添加构建步骤?

clojure - 在 Clojure 中声明匿名函数是否很昂贵?

Clojure:确定函数是否存在

clojure - 运行服务器时注册多个处理程序