通常前端通过 POST 请求向服务器端提交数据格式有4种,分别是 application/x-www-form-urlencoded 格式、multipart/form-data 格式、application/json 格式和 text/xml 格式。通常最常见的是 application/json 格式,也就是通过JSON字符串形式。
在控制台看到传给后台的数据是这样:
但是有的时候,后台需要 Form 形式的数据才能正常解析,所以前端需要在传过去时修改一下格式。开始我以为是修改 Content-Type 属性,于是就:
axios.defaults.headers = {
'Content-type': 'application/x-www-form-urlencoded'
}
设置之后看到请求时的 Content-type 变成了 application/x-www-form 格式,但是数据依旧是 json 格式,且依旧请求失败
之后继续查找真正的方法,使用 qs 转化
第一步:在项目中使用命令安装 qs
npm install qs --save
第二步:在需要使用的接口上引入 qs
import qs from 'qs'
第三步:使用 qs.stringify 转换请求的参数
qs.stringify(data)
现在查看相关请求数据:
请求成功!
关于 qs:
简单来说,qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库。
qs.parse() 是将URL解析成对象的形式
qs.stringify() 是将对象 序列化成URL的形式,以&进行拼接