使用axios将具有多个值的参数的对象作为GET中的查询字符串传递

Passing an object with a parameter with multiple values as a query string in a GET using axios

在 GET 上将具有多个值的参数作为查询字符串传递是很常见的:

http://server/status?stat=a&stat=b

如何使用JS中的axios库创建这种类型的查询字符串?创建一个对象,其中参数名称是键,值是多个值的数组创建一个查询字符串:

http://server/status?stat[]=a&stat[]=b

服务器期望的格式不正确。这可以在 axios 中完成吗?

It is common to pass a parameter with multiple values as a query string on a GET

这绝不是一个标准。不同的语言,框架实现不同的解决方案。在 .

上查看此问题

Can this be done in axios?

来自Axios documentation

In node.js, you can use the querystring module as follows:

var querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar'});

You can also use the qs library.

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.:

获取给定名称的多个实例(不附加 [] 数组标记)
var searchParams = new URLSearchParams();
searchParams.append('stat', 'a')
searchParams.append('stat', 'b')
axios.get('http://server/status', {params: searchParams});

会产生一个请求:

http://server/status?stat=a&stat=b

如另一个答案所述,它在 IE 中不起作用,但 polyfill url-search-params 可用。