使用Rook时,如何使JSON响应打印得漂亮?

时间:2016-01-26 18:36:29

标签: clojure rook

我正在使用Rook框架进行Web服务。我想让API响应很漂亮。似乎响应编码全部由wrap-restful-format的{​​{1}}函数处理。因此,我尝试将ring.middleware.format函数替换为我自己的版本,该版本将不同的选项传递到rook/wrap-with-standard-middleware

ring.middleware.format

这个编译很好,但它不能很好地打印响应,似乎永远不会调用自定义编码器。

  • Rook 1.3.9
  • ring-middleware-format 0.6.0
  • cheshire 5.4.0(上面为(defn make-encoders-seq [] [(ring.middleware.format-response/make-encoder (fn [s] (json/generate-string s {:pretty true})) "application/json")]) (defn wrap-with-standard-middleware-modified [handler] (-> handler (ring.middleware.format/wrap-restful-format :formats [:json-kw :edn] :response-options [:encoders (make-encoders-seq)]) ring.middleware.keyword-params/wrap-keyword-params ring.middleware.params/wrap-params)) (def handler (-> (rook/namespace-handler ["resource" 'my-app.resource]) (rook/wrap-with-injection :data-store venues) wrap-with-standard-middleware-modified))

1 个答案:

答案 0 :(得分:2)

尝试将您的格式/ wrap-restful-format更改为:

(ring.middleware.format/wrap-restful-format :formats (concat (make-encoders-seq) [:edn])