You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Axios发送FormData传递筛选条件,返回结果无筛选数据怎么办?

Axios发送GET请求带FormData无筛选结果的解决方案

核心问题

HTTP规范里,GET请求不存在请求体,Axios会直接忽略GET请求配置中的data字段,导致你设置的filtro_grafica参数根本没发送到服务器。而Postman或其他请求库做了兼容处理(比如自动把FormData转成URL查询参数),所以能正常生效。

修复方案

方案1:转为URL查询参数(推荐,符合HTTP规范)

把FormData里的参数放到Axios的params字段中,Axios会自动拼接成URL查询字符串发送:

const axios = require('axios');

let config = {
  method: 'get',
  url: 'https://thisismyurl/filter',
  headers: { 
    'Authorization': 'JWT MYTOKEN'
  },
  params: {
    filtro_grafica: '2,0,0,0'
  }
};

axios(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

方案2:改用POST请求(若服务器支持)

如果服务器原本就支持通过POST接收FormData参数,直接修改请求方法即可:

const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();
data.append('filtro_grafica', '2,0,0,0');

let config = {
  method: 'post',
  url: 'https://thisismyurl/filter',
  headers: { 
    'Authorization': 'JWT MYTOKEN', 
    ...data.getHeaders()
  },
  data : data
};

axios(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

为什么Postman能正常工作?

Postman处理GET请求的FormData时,会自动将其转换为URL查询参数发送,相当于替你完成了方案1的操作;而Axios严格遵循HTTP标准,不会自动转换,所以导致参数丢失。

内容的提问来源于stack exchange,提问作者Carlos Daniel Ospina Salazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:01:02