8

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

(: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-conjwhich 应该将多个同名参数转换为包含值的向量。

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

4

2 回答 2

8

使用标准的 Clojure 解构形式:

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

curl "http://localhost:3000/api?foo=1&foo=2&foo=3" 
==> ["1" "2" "3"]

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

于 2013-04-02T02:49:42.203 回答
0

我自己从来没有遇到过这个问题,但是如果确实不可能在不自己手动解析 URL 的情况下获取多个值,那么听起来值得在https://github.com/weavejester提交错误报告/作曲/。(除非它是一个功能。Compojure 和 Clout 中还有一些其他的东西有点不标准,但非常方便。)

于 2013-04-02T02:22:34.530 回答