《axios的响应》
在使用axios进行网络请求时,我们经常会遇到需要对响应进行统一处理的情况,如全局错误处理、响应数据格式化等。解决这一问题的一个有效方案就是使用axios的响应。
一、基本响应的使用
我们可以直接在创建axios实例或者引入axios之后添加响应。代码如下:
javascript
import axios from 'axios';</p>
<p>// 添加响应
axios.interceptors.response.use(response => {
// 对响应数据做点什么
return response;
}, error => {
// 对响应错误做点什么
return Promise.reject(error);
});
在这个基本的用法中,在use
方法的个参数是一个函数,当请求成功响应时会执行这个函数,并且可以对response
进行操作,例如只返回响应中的data部分:
javascript
axios.interceptors.response.use(response => {
return response.data;
}, error => {
return Promise.reject(error);
});
二、基于不同状态码的处理
如果想要根据不同的HTTP状态码进行不同的处理,可以在响应中判断response.status
。
javascript
axios.interceptors.response.use(response => {
if (response.status === 200) {
// 处理200状态码的逻辑,比如可能对某些特殊格式的数据再加工
return response.data;
} else {
// 可以根据其他状态码做相应处理
return response;
}
}, error => {
if (error.response) {
// 请求已发出,但服务器响应的状态码不在 2xx 范围内
switch (error.response.status) {
case 401:
// 处理401未授权的情况,如跳转到登录页面
break;
case 403:
// 处理403禁止访问的情况
break;
case 404:
// 处理404资源未找到的情况
break;
case 500:
// 处理服务器内部错误的情况
break;
default:
// 其他错误处理
}
}
return Promise.reject(error);
});
三、移除响应
有时候我们可能需要移除某个响应。当我们调用axios.interceptors.response.use
时它会返回一个标识符,可以通过这个标识符来移除。
javascript
const myInterceptor = axios.interceptors.response.use(response => {
return response.data;
}, error => {
return Promise.reject(error);
});</p>
<p>// 移除
axios.interceptors.response.eject(myInterceptor);
通过以上几种思路,我们可以根据实际项目需求灵活地使用axios的响应,从而实现对响应的有效处理,提高代码的可维护性和项目的稳定性。