使用 application/x-www-urlencoded 形式的post请求
在一般情况下,我们使用axios进行post请求是这样的
axios.post('url', {
username,
password,
})
.then((res) => { ... })
.catch((res) => { ... });
当我们需要创建一些信息,调用接口上传一些数据的时候,我们用以上的方式会发生500错误,原因是axios默认是application/json格式的,即使添加了请求头 最后的content-type的形式还是 json 的,需要进行字符串的转换才能成功请求。
解决方法
1.一个比较常用的方法是: 使用URLSearchParams API
const params = new URLSearchParams();
params.append('username', username);
params.append('password', password);
axios.post('url', params)
.then((res) => {...})
.catch((res) => {...});
2.使用qs序列化json对象(在某种情况下会出现中文乱码,需要后端过滤支持)
var qs = require('qs');
axios.post('url', qs.stringify({
'username': username,
'password': 'password'
}))
.then((res) => {...})
.catch((res) => {...});
网友评论