前言
提示:axios 基于promise封装的库[核心还是基于 XMLHttpRequest 发送请求的]
提示:http://www.axios-js.com/zh-cn/docs/
一、axios发送数据的返回情况
基于axios发送数据请求,返回结果都是一个promise实例
1、默认情况下,http状态码是2开始,则让promise状态成功
- 服务器返回的http状态码是2开始,则让promise状态成功,值是一个respose对象
response = {
config:{
...}, 发送axios请求设置的配置项
data:{
...}, 服务器返回的响应主体信息
headers:{
...}, 服务器返回的响应头信息
request:XMLHttpRequest实例对象, 原生的xhr对象
status:200, 服务器响应的HTTP状态码
statusText:'OK' 状态码的描述
}
- promise状态为失败
1、服务器有返回信息 [response对象不存在],只不过http状态码不是以2开始的
reason = {
config:{
...},
isAxiosError: true,
request:XMLHttpRequest实例对象,
response:等同于成功获取的response对象,
toJSON:function...,
message:'xxx',
...
};
2、请求超时 或者 请求中断了
3、断网了,特点:服务器没有反馈任何的信息
2、自定义服务返回的HTTP状态码为多少是成功,为多少失败!!
官网描述:
validateStatus
定义对于给定的HTTP 响应状态码是 resolve 或 reject promise 。如果 validateStatus
返回 true
(或者设置为 null
或 undefined
),promise 将被 resolve; 否则,promise 将被 rejecte
// axios的validateStatus配置项,就是自定义promise实例状态是成功的条件
validateStatus: function (status) {
return status >= 200 && status < 300; // default
},
二、基于axios发送请求的方式
1、axios([config]) 或者 axios([url],[config])
// 发送 POST 请求
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
// 获取远端图片
axios({
method:'get',
url:'/user/list',
params:{
departmentId:0
}
})
.then((response)=>{
console.log('res',response)
})
.catch((e