簡(jiǎn)介
ring-middleware-format是一系列Ring中間件,用于解析請(qǐng)求map的:body,以及序列化響應(yīng)map的:body。內(nèi)置支持格式JSON/MessagePack/YAML/EDN/Transit over JSON/Msgpack,并且能夠自定義格式。
wrap-restful-format
該中間件函數(shù)支持內(nèi)置的所有格式,接受一個(gè)可選的:formats參數(shù),用于配置要處理的格式,列表中的第一項(xiàng)同時(shí)作為默認(rèn)的序列化格式。例如
(wrap-restful-format handler :formats [:json :edn :yaml])
對(duì)于內(nèi)容為json格式(application/json)的請(qǐng)求,wrap-restful-format為之增加了:params以及:body-params。對(duì)于以下請(qǐng)求
(mock/content-type
(mock/body
(mock/request :post "/hello")
"{\"x\":1}")
"application/json")
以wrap-restful-format處理json
(def app
(wrap-restful-format
(fn [request] (println request) {})
:formats [:json]))
(app request)
可以看到打印出來(lái)的請(qǐng)求
{:params {x 1}, :body-params {x 1}, ...}
總結(jié)一下,wrap-restful-format的:json格式處理application/json請(qǐng)求,解析body的json對(duì)象,并將json對(duì)象的屬性和值存放到參數(shù)的:params和:body-params中。