我可以通过以下方式轻松获取请求参数:
(:foo params)
但是,当我收到这样的请求时:
/api?foo=1&foo=2&foo=3
我只回到"3"
,而我期待一个数组["1","2","3"]
。
我不确定为什么会这样,因为当我查看代码时:
https://github.com/ring-clojure/ring-codec/blob/master/src/ring/util/codec.clj#L128
似乎调用assoc-conj
,它应该将同名的多个参数转换为包含值的向量。
我在这里遗漏了什么或这是一个错误吗?
答案 0 :(得分:7)
使用标准的Clojure解构表:
(GET "/api" {{:strs [foo]} :query-params} (str foo))
curl "http://localhost:3000/api?foo=1&foo=2&foo=3"
==> ["1" "2" "3"]
doc:https://github.com/weavejester/compojure/wiki/Destructuring-Syntax
答案 1 :(得分:0)
我自己从未遇到过这个问题,但是如果没有自己手动解析网址确实无法获得多个值,那么听起来好像是在https://github.com/weavejester/compojure/提交错误报告。 (除非它是一个功能..在Compojure和Clout中还有一些其他的东西,有点非标准但非常方便。)