【发布时间】:2020-04-14 22:13:31
【问题描述】:
我正在使用 React 和 axios 从 API 获取数据。一切正常,直到由于某种原因我需要拦截响应,在这种情况下,我的表单数据不再发送。
对于所有经典案例,我都在做这样的事情:
const formData = new FormData();
formData.append('param1', 'value1');
formData.append('param2', 'value2');
formData.append('param3', 'value3');
axios({
//...
data: formData
})
所以我可以在请求调用中看到:
要使用拦截器,我尝试不更改上面的配置,如下所示:
const instance = axios.create({
//...
data: formData
});
instance.interceptors.response.use((response) => {
//...
}, (error) => {
//...
});
instance.request();
但是请求头中没有发送表单数据:
我的第二次尝试是使用 qs 解析和字符串化库,但我得到了相同的结果
const instance = axios.create({
//...
data: qs.stringify({
param1: 'value1',
param2: 'value2',
param3: 'value3'
})
});
instance.interceptors.response.use((response) => {
//handle success
}, (error) => {
//handle error
});
instance.request();
我的第三次尝试是在发送请求之前通过修改配置(添加formData)添加请求拦截器,但我从未访问回调函数(下面的console.log() 行),所以我得到了相同的结果:
axios.interceptors.request.use(function (config) {
console.log(config);
// Do something before request is sent
}, function (error) {
// Do something with request error
});
我创建了this live running example 来模拟我上面的 3 次尝试。
对此问题有任何反馈或帮助吗?
【问题讨论】: