为什么我不能从axios发送表单数据?

bn31dyow  于 2022-12-18  发布在  iOS
关注(0)|答案(1)|浏览(203)

我正在使用一个API,它要求我在formData中发送一个过滤器系列,当从Postman中进行测试时,一切都没有问题,我尝试了其他库,它也没有问题,但当尝试从axios中进行测试时,信息没有随过滤器返回。
这是我正在使用的代码:

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

let config = {
  method: 'get',
  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);
});
t5zmwmid

t5zmwmid1#

您可以使用get方法发送表单数据,但大多数服务器会拒绝表单数据。
然而,它不再被推荐了,原因是,首先因为它在URL中可见,浏览器可以将其缓存在历史堆栈中,第二个原因是浏览器对URL中的最大字符数有一些限制。
如果你只想在表单中发送几个字段/输入,你可以使用它,但是如果你有多个输入,你应该避免它,而是使用POST。
最后,这取决于您自己的用例。从技术上讲,GET和POST都可以将数据发送到服务器。
get替换为post

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);
});

相关问题