如何在Compojure中获取重复的请求参数

Ste*_*ntz 8 clojure compojure

我可以通过以下方式轻松获取请求参数:

(:foo params)
Run Code Online (Sandbox Code Playgroud)

但是,当我有这样的请求时:

/api?foo=1&foo=2&foo=3
Run Code Online (Sandbox Code Playgroud)

我只是回来,"3"而我期待一个阵列["1","2","3"].

我不确定为什么会这样,因为当我查看代码时:

https://github.com/ring-clojure/ring-codec/blob/master/src/ring/util/codec.clj#L128

它似乎调用assoc-conj哪个应该将同名的多个参数转换为包含值的向量.

我在这里遗漏了什么或这是一个错误吗?

num*_*_cn 7

使用标准的Clojure解构形式:

(GET "/api" {{:strs [foo]} :query-params} (str foo))

curl "http://localhost:3000/api?foo=1&foo=2&foo=3" 
==> ["1" "2" "3"]
Run Code Online (Sandbox Code Playgroud)

doc:https://github.com/weavejester/compojure/wiki/Destructuring-Syntax