axios实现POST/PUT接口入参是 query的形式而非JSON的形式先看下什么是query的形式入参:
GET请求
一般是GET请求才会是query string parameters的形式入参
query string parameters的展示,最终效果是拼接到url地址中,如下图所示:
POST/PUT请求
一般是POST/PUT请求才会是request payload的形式入参
request payload的展示,请求头request headers中的content-type是application/json
formData的POST/PUT请求——content-type是multipart/form-data——常用于文件的上传(通过new formData格式上传)
form data的展示,请求头request headers中的content-type是multipart/form-data

此时的处理方法就是:
let formData = new FormData();
formData.append('file', 内容1);
formData.append('id', 内容2);
formData.append('filePath', 内容3);
'Content-Type': 'multipart/form-data'uploadImg(data) {
return axios.request({
url: '接口地址',
headers: {
'Content-Type': 'multipart/form-data'
},
method: 'post',
data
});
},
formData的POST/PUT请求——content-type是application/x-www-form-urlencoded(通过qs实现)
form data的展示,请求头request headers中的content-type是application/x-www-form-urlencoded

4步骤,第二张图片的实现方式看5步骤。接口部分的处理:
'Content-Type': 'application/x-www-form-urlencoded',UploadContractAgain(params) {
return request(
url:'接口地址',
METHOD.PUT,
qs.stringify(params),
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
}
);
},
如果要使用qs则需要先安装querystring插件:
querystring插件——npm install querystringquerystring模块引入——import querystring from 'querystring'全部引入的话,则写在main.js中,局部引入的话,则写在单个文件中
比如上面的写法,则直接在当前接口文件中引入即可。
qs.stringify(xxx)的方式处理对象参数为query参数
打印一下对象,及通过qs.stringify(xx)转义后的参数对比:
对象参数:

通过qs.stringify(x)转义后的参数如下:

querystring的POST/PUT请求——content-type是application/x-www-form-urlencoded(通过qs实现)
form data的展示,请求头request headers中的content-type是application/x-www-form-urlencoded

export function postChangeOwner(params) {
return requestSupplier(
`api/Supplier/ChangeOwner?${qs.stringify(params)}`,
METHOD.POST,
null,
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
}
);
}
注意:querystring的入参 一定是要拼接到url地址中的……formData形式的入参(除文件上传之外的)和querystring的入参,contentType的属性值是一样的,都是application/x-www-form-urlencoded,区别就在于参数是否拼接到url地址中,如果手动拼接到url地址中,则入参会变成querystring中,如果不拼接,则入参会变成formData中。总结:如果遇到 put/post 请求的query传参,则优先选择 通过qs.stringify(params)转化后拼接到url地址中的方式,上面步骤 4与步骤 5中的都适用,但是如果将qs.stringify(params)转化后的参数作为入参,通过formData的形式传入,则部分接口会报错。总结:如果遇到 put/post 请求的formData传参,则优先选择通过 new FormData的形式处理,此时headers也可以省略,该步骤等同于适用qs.stringify(obg)转义后的数据+headers配置称multipart/form-data完成!!!
感谢大家的支持!!!