封装一个Axios
首先我们看下原生axios的请求是什么样的
axios('http://localhost:3000/data', {
method: 'GET',
timeout: 1000,
withCredentials: true,
headers: {
'Content-Type': 'application/json',
Authorization: ''Bearer' + getToken(),
},
transformRequest: [function(data, headers) {
return data;
}],
// 其他请求配置...
})
.then((data) => {
// todo: 真正业务逻辑代码
console.log(data);
}, (err) => {
if (err.response.status === 401) {
// handle authorization error
}
if (err.response.status === 403) {
// handle server forbidden error
}
// 其他错误处理.....
console.log(err);
});
小结:我们可以知道,使用axios发送一个请求需要配置
请求地址:url:你要请求的地址
请求方式:method:你的请求方式
设置超时:timeout:设置超时时间
跨域请求时是否需要使用凭:withCredentials:开启withCredentials后,服务器才能拿到你的cookie,当然后端服务器也要设置允许你获取你开启了才有用
请求头:headers :
- Content-Type:设置请求数据格式,告诉服务器我传的什么类型
- Content-Type: application/json : 请求体中的数据会以json字符串的形式发送到后端
- Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端
- Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件
- Content-Type:设置请求数据格式,告诉服务器我传的什么类型
设置Cookie: Authorization :把cookie放在这个位子
请求预处理函数:transformRequest :请求转换数据类型,post请求的data一般都是一个obj,后端只能解析url字符串,可以在这个地方统一转换
请求成功: .then :这里面操作数据
错误信息:(err):这里面通过判断错误状态码,做出相应的操作