私はcomp-jsonのwrap-json-responseミドルウェアをcompojure app内で使用しようとしています。私は{:foo 1}
のようなマップを返す単純なGETハンドラを持っています。そしてURLをヒットすると、リングはtext/plain
と空のレスポンスボディで応答します。私はマップのJSONバージョンで応答するようには思えません。ring-jsonのwrap-json-responseミドルウェアとコンポジットはtext/plainを返しますか?
ここに私のハンドラのコードです:
(ns localshop.handler
(:use compojure.core)
(:require [localshop.routes.api.items :as routes-api-items]
[ring.middleware.json :as middleware]
[compojure.handler :as handler]
[compojure.route :as route]))
;; map the route handlers
(defroutes app-routes
(context "/api/item" [] routes-api-items/routes))
;; define the ring application
(def app
(-> (handler/api app-routes)
(middleware/wrap-json-body)
(middleware/wrap-json-params)
(middleware/wrap-json-response)))
ルートハンドラ関数は、文字通りマップを返すので、そのためのコードは、私が出て残すことができると考えていることは十分に簡単ですが。コンポジットルートハンドラからマップを返すことが問題ならば、それはおそらくそれでしょうか?
感謝を。これは本当によく文書化されているはずです。 –
なぜそれは包み込まれなければならないか考えてください:体? –
私の推測では、メソッドがレスポンスの本体以外の多くのオプションを許可する可能性があるため、暗黙的に '{:body {}} 'を指定する必要があります。 – film42