以前在项目里遇到过这个问题:我给后端传递的数组,对方接收不到。
通过查资料,找到了解决办法:
接收参数需要这样写:@RequestParam(value = "nicks[]") String[] nicks
,一定要是数组形式,才可以接收到。
But,问题出在上一周/(ㄒoㄒ)/~~ 因为node端用了request
中转了一下,后端又接收不到了,同样的方法处理愣是不管用:
刚开始直接甩锅,这个问题不是遇到过嘛,肯定是后端没处理好。后来把我拉过去看看代码,好吧确实已经按照上次的经验处理了,然后开始找bug…
终于意识到request
的不同之处,好吧开始看文档,发现:
form
- when passed an object or a querystring, this setsbody
to a querystring representation of value,
and addsContent-type: application/x-www-form-urlencoded
header. When passed no options,
aFormData
instance is returned (and is piped to request). See “Forms” section above.
qsStringifyOptions
- object containing options to pass to theqs.stringify
method. Alternatively pass options to
thequerystring.stringify
method using this format{sep:';', eq:':', options:{}}
. For example, to change the way
arrays are converted to query strings using theqs
module pass the arrayFormat option with one ofindices|brackets|repeat
继续查看qs
终于解决:在request
触发发送之前,把数组参数处理一下,改成nicks[]=a&nicks[]=b&nicks[]=c
这种格式就好啦,就是使用qs
的方法:qs.stringify(object, [options]);