2013-06-12 64 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密鑰,並且還有一些中間件集合,這些中間件也可以用於響應。還有一些其他類似的環形中間件項目。