Web サービスに Rook フレームワークを使用しています。API 応答をきれいに印刷したいと考えています。レスポンスのエンコーディングはすべてwrap-restful-format
from の関数で処理されているようring.middleware.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
- cheshire 5.4.0 (
json/generate-string
上記の場合)