Clojure 使用cljsajax在GET调用中将数组作为param发送到环后端

Clojure 使用cljsajax在GET调用中将数组作为param发送到环后端,clojure,clojurescript,ring,Clojure,Clojurescript,Ring,我正在使用cljs-ajax对一个环后端进行GET调用 问题是我也需要传递一个数组 cljs ajax对数组进行如下编码: ?array[0]=one&array[1]=two ?array=one&array=two ring希望数组编码如下: ?array[0]=one&array[1]=two ?array=one&array=two 因此,使用wrap-params中间件,我没有得到数组,只得到不同的键值对({array[0]“one”array[

我正在使用cljs-ajax对一个环后端进行GET调用

问题是我也需要传递一个数组

cljs ajax对数组进行如下编码:

?array[0]=one&array[1]=two
?array=one&array=two
ring希望数组编码如下:

?array[0]=one&array[1]=two
?array=one&array=two
因此,使用
wrap-params
中间件,我没有得到数组,只得到不同的键值对(
{array[0]“one”array[1]“two}

有没有办法解决这个问题,或者我必须在服务器端手动解析参数


谢谢

限制不在ring或cljs ajax中。这是http协议中的限制。在GET请求中,参数只是?name=val&name=val,没有机制告诉另一端的服务器参数表示一个数据数组-也就是说,区分规范名称/值对和应该解释为数组

因此,您需要手动将ring中间件生成的映射转换为自己处理程序中的数组。您可以使用启发式实现中间件,该中间件在参数名称中查找具有特定“模式”的get参数,例如#“array[\d+\]“并让它将它们提取到一个数组中,然后插入到您的参数映射中。然而,我认为这有点混乱,除非您需要在许多处理程序中这样做,否则它可能会引入更多问题,而不是解决问题


最简单的方法是将调用转换为post,而不是get和use json

我明白了,这很有道理。尽管它们都提供了实现这一点的方法,但标准不同,这仍然很奇怪。我认为问题在于,在GET请求中传递数据数组实际上没有任何“标准”。clj ajax库至少提供了一些处理数组的解释,即将“键”转换为使用数组元素号生成唯一值的字符串,即“数组[0]”。问题在于,由于没有标准,环形中间件无法知道某些库将使用什么解决方案。