小编典典

在Axios中以GET方法URL搜索参数发送嵌套对象

reactjs

我正在尝试使用如下所示的URL搜索参数发送请求,但无法访问服务器端的嵌套对象 过滤器

axios.get('/get handler', {
  params: { 
    room: 1,
    filter: {
     fan: 2, 
     table: 1,
  }
});

我可能做错了什么?
我在服务器端使用 Django restFramework
3,但无法访问filter该方法中的密钥。我正在使用查询参数request.query_params
,但当request.query_params.get('filter')我得到none


阅读 705

收藏
2020-07-22

共1个答案

小编典典

您需要序列化参数,并且可以通过编写 此github问题中
提到的小配置来完成,

通常,您可以在应用程序的main.js文件或顶级文件中拥有此配置,但同样取决于您何时执行它

// main.js
import axios from "axios";

// Format nested params correctly
axios.interceptors.request.use(config => {
  window.console.log(config);

  config.paramsSerializer = params => {
    // Qs is already included in the Axios package
    return Qs.stringify(params, {
      arrayFormat: "brackets",
      encode: false
    });
  };

  return config;
});

从axios 0.18.0开始:

// main.js
import axios from "axios";
import Qs from 'qs';

// Format nested params correctly
axios.interceptors.request.use(config => {

  config.paramsSerializer = params => {
    // Qs is not included in the Axios package
    return Qs.stringify(params, {
      arrayFormat: "brackets",
      encode: false
    });
  };

  return config;
});
2020-07-22