2013-06-12 41 views
9

我一直在阅读edn规范,并希望将其集成到我的应用程序中。但是,我不知道如何在clojure和客户端之间传输edn请求。我们是否将一个内容类型的应用程序/ 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(2013年6月14日)接受,但正确的内容类型为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密钥,并且还有一些中间件集合,这些中间件也可以用于响应。还有一些其他类似的环形中间件项目。