繁体   English   中英

Axios + 查询字符串

[英]Axios + query-string

我想知道如何使用查询字符串 npm package 来简化我的 axios 调用。 我使用的 package 是: https://www.npmjs.com/package/query-string

一个例子:

import qs from 'query-string';
import axios from 'axios';

axios.get(`http://localhost:3000/api/products${qs.parse({ offset: 0, limit: 12 })}`);

不知道为什么,但这不能按预期工作。

你真的不需要它。 Axios有一种标准方法可以将参数放入您的请求中,而无需任何额外的库或手动执行某些操作。

axios
    .request({
      url: '/some/url',
      method: 'get',
      params: {
        offset: 0,
        limit: 12,
        unknown: '???'
      },
      ...
    })

必须转换为/some/url?offset=0&limit=12&unknown=%3F%3F%3F

由于不需要使用查询字符串,因为 axios 通过将参数放入请求中自动执行此操作。

但是,如果您想使用查询字符串 package ,您可以通过这种方式进行操作。

这是一个简短的示例,可以让您对使用query-string有所了解。

 import qs from 'qs'; (https://www.npmjs.com/package/qs) import axios from 'axios'; export default axios.create({ baseURL: `http://localhost:3000/api/products`, params: (params) => { return qs.stringify(params, {offset: 0, limit: 12}); }, });

Axios提供了另一种方便而强大的方法,将您的查询参数作为 object 发送到 http GET方法。

您可以通过以下方式更改您的请求:

axios.get('http://localhost:3000/api/products', {
    params: {
      offset: 0,
      limit: 12
    }
  })

为了使用模板文字,您需要使用反引号 ( ) 不是正常的引号。 代码:

axios.get(`http://localhost:3000/api/products${qs.parse({ offset: 0, limit: 12 })}`);

如果您不想使用反引号,则不能使用${}语法。 就像正常的字符串插值一样。

axios.get(‘http://localhost:3000/api/products'+qs.parse({ offset: 0, limit: 12 })});
this.$axios.get('/', {
    params: {},
    paramsSerializer: params => {
      return qs.stringify(params);
    }
  })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM