我的项目需求是三种登录方式切换登录,由于对发请求格式不太熟悉的缘故,导致证书/秘钥登录方式花费了一些时间,记录下这次的问题如下:
证书/秘钥登录方式都需要上传证书/秘钥文件,请求体的格式(FormData格式),需要根据登录方式修改header中的"Content-Type"属性为"multipart/form-data":
headers: {'Content-Type': 'multipart/form-data'}
还需要对请求传参进行格式化,然后进行自己需要的请求操作就可以啦~~~
let url = "loginURL";
let username = "Daysons";
let loginType = "CERTIFICATE";
let data = new FormData();
data.append("username", username);
data.append("file", file); //file为其他方式传递过来的
data.append("loginType", loginType);
Axios.post(url, data, {
headers: {'Content-Type': 'multipart/form-data'}
});
关于表单请求的默认编码application/x-www-form-urlencoded发送请求又该怎么写呢?
let url = "loginURL";
let data = {
username: "Daysons",
loginType: "CERTIFICATE"
};
Axios.post(url, qs.stringify(data), {
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
// 或者
const data = new URLSearchParams();
data.append('username', 'Daysons');
data.append('loginType', 'CERTIFICATE');
Axios.post(url, data, {
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}); //有兼容性问题
其中qs.stringify的作用是讲传参序列化未多个键值对;