Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js。它可以帮助你轻松地从浏览器发出 HTTP 请求,同时也支持拦截请求和响应、转换请求和响应数据等。
在 Axios 请求中捕获错误并进行重定向通常涉及到以下几个步骤:
以下是一个简单的示例,展示了如何在 Axios 请求中捕获错误并进行重定向:
import axios from 'axios';
import { useRouter } from 'vue-router'; // 假设使用 Vue Router 进行路由管理
const apiClient = axios.create({
baseURL: 'https://api.example.com',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
const router = useRouter();
// 添加响应拦截器
apiClient.interceptors.response.use(
response => {
// 请求成功的情况
return response;
},
error => {
// 请求失败的情况
if (error.response) {
// 请求已发出,但服务器响应的状态码不在 2xx 范围内
switch (error.response.status) {
case 401:
// 未授权,重定向到登录页面
router.push('/login');
break;
case 403:
// 禁止访问,重定向到无权限页面
router.push('/no-permission');
break;
case 500:
// 服务器错误,重定向到错误页面
router.push('/server-error');
break;
default:
// 其他错误处理
break;
}
} else if (error.request) {
// 请求已发出,但没有收到响应
console.error('No response received:', error.request);
} else {
// 在设置请求时发生了一些事情,触发了错误
console.error('Error setting up the request:', error.message);
}
return Promise.reject(error);
}
);
// 使用 apiClient 发起请求
apiClient.get('/some-endpoint')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Request failed:', error);
});
这种错误处理和重定向机制在以下场景中非常有用:
通过以上步骤和示例代码,你可以轻松地在 Axios 请求中捕获错误并进行重定向。
领取专属 10元无门槛券
手把手带您无忧上云