使用 Rook 时如何使 JSON 响应打印得漂亮?
How can I make JSON responses be pretty-printed when using Rook?
我正在为 Web 服务使用 Rook 框架。我想让 API 回复打印得漂亮。似乎响应编码都由 ring.middleware.format
中的 wrap-restful-format
函数处理。所以我尝试用我自己的版本替换 rook/wrap-with-standard-middleware
函数,该版本将不同的选项传递给 ring.middleware.format
.
(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.3.9
- 环形中间件格式 0.6.0
- 柴郡 5.4.0(以上
json/generate-string
)
尝试将您的 format/wrap-restful-format 更改为:
(ring.middleware.format/wrap-restful-format :formats (concat (make-encoders-seq) [:edn])
我正在为 Web 服务使用 Rook 框架。我想让 API 回复打印得漂亮。似乎响应编码都由 ring.middleware.format
中的 wrap-restful-format
函数处理。所以我尝试用我自己的版本替换 rook/wrap-with-standard-middleware
函数,该版本将不同的选项传递给 ring.middleware.format
.
(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.3.9
- 环形中间件格式 0.6.0
- 柴郡 5.4.0(以上
json/generate-string
)
尝试将您的 format/wrap-restful-format 更改为:
(ring.middleware.format/wrap-restful-format :formats (concat (make-encoders-seq) [:edn])