首页 > 解决方案 > 字符串查询参数被转换为数组

问题描述

我在某些 nodejs 服务器中遇到问题,其中字符串查询参数被解析为数组而不是保存为字符串。所以像这样的东西https://somedomain.com/test?first=val&token=secret会在 nodejs 服务器上被解析,这样 in 的值params.first['val']代替,'val'而 in 的值params.token['secret']代替'secret'。不寻常的是,我在不相关的 nodejs 服务器中看到了这一点。一个是在生产中运行的 aws lambda,另一个是我使用的本地开发express.js服务器bodyParser。每个都有不同的代码库。在过去,我遇到了qs的问题package 由于它解析数组的方式,但这个问题似乎完全不相关,我似乎无法在其他地方找到类似的问题。有谁知道是什么导致了这种行为?谢谢!:)

标签: node.jsaws-lambdaquery-stringbody-parserquery-parameters

解决方案


我最终发现问题在于 url 多次具有相同的查询参数,而querystring包通过为每个值创建一个数组来处理这个问题。该软件包已弃用,因此我切换到推荐的URLSearchParams替代方案,并修复了 url 中的重复问题。


推荐阅读