在我的Web处理程序中,我定义了以下内容:
(:require ...
[ring.middleware.cookies :refer [wrap-cookies]]
[ring.middleware.multipart-params :refer [wrap-multipart-params]]
[ring.middleware.params :refer [wrap-params]]
[ring.middleware.keyword-params :refer [wrap-keyword-params]]
[ring.middleware.content-type :refer [wrap-content-type]]
[ring.middleware.format-response :refer [wrap-restful-response]
...)
(def app
(-> (routes home/my-routes)
(wrap-cookies)
(wrap-params)
(wrap-multipart-params)
(wrap-keyword-params))))
一切正常。使用看起来像“../test?foo=123”的URL测试卷曲给我一个看起来像{:foo 123}的参数图。但是,显示为关键字的实际上是一个字符串:( keyword?:foo)返回false。
我已经尝试重新安排处理程序并逐个删除它们,但无济于事。是否有关于compojure的东西将关键字转换回字符串?感谢
答案 0 :(得分:5)
wrap-keyword-params
中间件应该在wrap-params
和wrap-multipart-params
之后运行,因此您的应用应该如下所示:
(def app
(-> (routes home/my-routes)
(wrap-keyword-params)
(wrap-cookies)
(wrap-params)
(wrap-multipart-params))))