如何在使用 Rook 时使 JSON 响应打印得很漂亮



我正在使用Rook框架进行Web服务。 我想使 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])

相关内容

  • 没有找到相关文章

最新更新