返回
Axios 随手拈来:请求与响应拦截器
前端
2022-12-08 22:52:25
Axios拦截器指南:掌控HTTP请求与响应
一、拦截器原理与实现
Axios拦截器就像一个HTTP请求和响应之间的过滤器,允许你在请求发出和响应返回之前对其进行处理。拦截器原理很简单,它注册了一个函数,当HTTP请求或响应发生时,这个函数就会被调用。这些函数可以执行各种各样的操作,从添加请求头到修改响应数据。
二、拦截器的妙用:请求/响应拦截场景
拦截器的应用非常广泛,以下是几个常见的场景:
- 请求头注入: 在每个请求中添加自定义请求头,如身份验证令牌或语言偏好。
- 请求数据修改: 加密或压缩请求数据。
- 响应数据处理: 解析JSON数据或转换数据格式。
- 请求取消: 当用户取消操作或请求超时时取消请求。
三、拦截器示例:代码教你如何使用
1. 安装Axios
npm install axios
2. 创建拦截器
axios.interceptors.request.use((config) => {
// 在发送请求之前做些什么
return config;
});
axios.interceptors.response.use((response) => {
// 在收到响应之后做些什么
return response;
});
四、活用拦截器:取消请求的N种姿势
拦截器不仅可以修改请求和响应,还可以取消请求。这在用户取消操作或请求超时时非常有用。
取消请求有两种方法:
方法一:使用abort()方法
const controller = axios.CancelToken.source();
const config = {
cancelToken: controller.token,
};
axios.get('https://example.com', config).then((response) => {
// 请求成功
}).catch((error) => {
if (axios.isCancel(error)) {
// 请求被取消
} else {
// 其他错误
}
});
// 取消请求
controller.cancel();
方法二:使用cancelToken.promise
const cancelToken = axios.CancelToken.source();
const config = {
cancelToken: cancelToken.token,
};
axios.get('https://example.com', config).then((response) => {
// 请求成功
}).catch((error) => {
if (axios.isCancel(error)) {
// 请求被取消
} else {
// 其他错误
}
});
// 取消请求
cancelToken.promise.then((cancel) => {
cancel();
});
五、结论:拦截器在手,天下我有
Axios拦截器是请求的守护者,响应的魔术师,请求取消的利器。它赋予开发者在请求和响应处理上的极大灵活性。掌握了拦截器,你就能随心所欲地掌控HTTP通信,让代码更加灵活、强大。
常见问题解答
1. 拦截器什么时候被调用?
请求拦截器在请求发出前调用,响应拦截器在响应返回后调用。
2. 拦截器可以做什么?
拦截器可以执行各种操作,包括修改请求和响应数据、添加请求头、取消请求等。
3. 如何取消请求?
可以使用abort()方法或cancelToken.promise取消请求。
4. 拦截器可以链式调用吗?
可以,你可以为请求或响应注册多个拦截器,它们将按照注册顺序被调用。
5. 如何在拦截器中获取错误?
拦截器可以捕捉错误并返回一个Promise reject。