如何简单地编写一个使用 Pedestal 从 get/post 请求中提取 json 的拦截器
How does one simply write an interceptor that extracts json from a get/post request using Pedestal
我正在做一个简单的 API 需要从 json/edn 请求中读取正文参数
我试图让程序将内容作为 edn 对象回显,但我的路线似乎在这里不起作用
(def routes
(route/expand-routes
#{["/echo" :get [body-params/body-params print-response] :route-name :greet]}))
拦截器
(def print-response {:name ::print-response
:leave (fn [context]
(let [content-type (get-in context [:request :content-type])
updated-response (assoc (-> context :response) :headers {"Content-Type" content-type}
:status 200
:body (get-in context [:request] :edn-params))]
(assoc context :response updated-response))
)
}
)
修复:将括号放在主体参数周围
解释
实际上 body-params 是一个创建拦截器的高阶函数,因此必须调用它
(def routes
(route/expand-routes
#{["/echo" :get [(body-params/body-params) print-response] :route-name :greet]}))
我正在做一个简单的 API 需要从 json/edn 请求中读取正文参数 我试图让程序将内容作为 edn 对象回显,但我的路线似乎在这里不起作用
(def routes
(route/expand-routes
#{["/echo" :get [body-params/body-params print-response] :route-name :greet]}))
拦截器
(def print-response {:name ::print-response
:leave (fn [context]
(let [content-type (get-in context [:request :content-type])
updated-response (assoc (-> context :response) :headers {"Content-Type" content-type}
:status 200
:body (get-in context [:request] :edn-params))]
(assoc context :response updated-response))
)
}
)
修复:将括号放在主体参数周围 解释 实际上 body-params 是一个创建拦截器的高阶函数,因此必须调用它
(def routes
(route/expand-routes
#{["/echo" :get [(body-params/body-params) print-response] :route-name :greet]}))