采用爱可信
问题描述:
这是常见的通过具有多个值的参数作为一个GET查询字符串传递对象与多个值作为一个GET查询字符串参数:采用爱可信
http://server/status?stat=a&stat=b
一个人如何创造这种类型的查询字符串在JS中使用axios库?创建一个对象,其中的参数名称是键和值是多个值的阵列创建一个查询字符串:
这是从什么服务器预期的格式不正确。这可以在axios中完成吗?
答
常见的是通过具有多个值的参数作为在查询字符串GET
这决不是一个标准。不同的语言,框架实施不同的解决方案。在Authoritative position of duplicate HTTP GET query keys上看到这个问题。
这可以在axios中完成吗?
在Node.js的,你可以使用查询字符串模块如下:
var querystring = require('querystring'); axios.post('http://something.com/', querystring.stringify({ foo: 'bar'});
您还可以使用QS库。
qs library支持数组。
另一种方法是使用Connect。
更新
的QS库支持阵列,但仅当该参数被后缀[]
:
var paramsString = "q=URLUtils.searchParams&topic[]=api&topic[]=bar"
或者,URLSearchParams API提供getAll()
方法:
var paramsString = "q=URLUtils.searchParams&topic=api" var searchParams = new URLSearchParams(paramsString); searchParams.getAll("topic"); // ["api"]
这在IE中不起作用,但可以使用polyfill url-search-params。
URLSearchParams API也可以根据Axios文档使用。谢谢@sgtdck – flashmatrix
我试过qs库,但它目前不支持1对多键/值对(key = stat,value = 1,2,3 ...)。 URLSearchParams接口仍然是一个有效的解决方案。该API在IE中不受支持,但可以使用polyfill [url-search-params](https://github.com/WebReflection/url-search-params)。 – flashmatrix
@flashmatrix我更新了答案,但重新阅读您的评论我没有意识到你需要1:许多键/值对。你的意思是'?key = stat&value = 1,2,3'这会导致'stat = [1,2,3]'? – sgtdck