Axios: 获取带键值的参数数组

创建于 2017-09-20  ·  3评论  ·  资料来源: axios/axios

你好,

我一直在寻找,但找不到方法。 基本上我想用这样的数组参数发送GET请求

GET /comments?filter[post]=3&filter[author]=12

我试过这个

params: {
  filter: {post: 3, author: 12}
}

但仍然没有运气:(

任何提示?

谢谢

最有用的评论

@ghprod ,首先我想明确一点,我不是这个库的贡献者,也不是我使用它,但我路过时看到了这个问题,并决定稍微调查一下代码。

Axios 默认不支持这种编码,但它允许您提供自定义序列化程序。 您可以使用以下代码轻松完成此操作:

// Axios include here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: customSerializerFunc
});

为了使它更简单,我用Google搜索了一下对查询字符串串行库,发现QS这对于浏览器和支持的NodeJS。 您可以通过以下方式将其用作序列化程序:

// Include axios and qs here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: qs.stringify  // If this doesnt work, append .bind(qs) to the end of this line.
});

也许您会看到: filter%5Bpost%5D=3而不是filter[post]=3 ,那是因为启用了 URL 编码。 您可以通过以下方式禁用它:

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: function(params) {
        return qs.stringify(params, { encode: false });
    }
});

让我知道它是否有效。
问候。

所有3条评论

@ghprod ,首先我想明确一点,我不是这个库的贡献者,也不是我使用它,但我路过时看到了这个问题,并决定稍微调查一下代码。

Axios 默认不支持这种编码,但它允许您提供自定义序列化程序。 您可以使用以下代码轻松完成此操作:

// Axios include here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: customSerializerFunc
});

为了使它更简单,我用Google搜索了一下对查询字符串串行库,发现QS这对于浏览器和支持的NodeJS。 您可以通过以下方式将其用作序列化程序:

// Include axios and qs here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: qs.stringify  // If this doesnt work, append .bind(qs) to the end of this line.
});

也许您会看到: filter%5Bpost%5D=3而不是filter[post]=3 ,那是因为启用了 URL 编码。 您可以通过以下方式禁用它:

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: function(params) {
        return qs.stringify(params, { encode: false });
    }
});

让我知道它是否有效。
问候。

它的作品..:+1:

非常感谢@ngonzalvez

祝你有美好的一天 :)

嗨,我需要有关 axios 的帮助——我如何从输入中获取一个值并将其作为 axios.get 参数的值; 说我正在构建的搜索功能 - 网址的一部分是查询参数。

这是代码
公理
.get('http://localhost:8080/customer/search?hint=da')

其中提示 = "searchText"

请帮忙。

谢谢!

此页面是否有帮助?
0 / 5 - 0 等级