在Vue应用中捕捉到特定的HTTP状态码(例如403 Forbidden)并进行相应处理,可以通过使用全局的HTTP请求拦截器来实现。这样可以确保每次请求失败时都能统一处理错误,并根据不同的状态码执行相应的逻辑。
下面是一个详细的实现步骤:
首先,确保你已经安装了Axios,并且在你的Vue应用中进行了配置。
npm install axios
然后,在你的Vue应用中配置Axios:
// src/http.js
import axios from 'axios';
const instance = axios.create({
baseURL: 'http://your-api-url',
headers: {
'Content-Type': 'application/json',
},
});
// 请求拦截器
instance.interceptors.request.use(
config => {
// 在发送请求之前做一些事情,例如添加token
const token = localStorage.getItem('accessToken') || '';
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
error => {
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
response => {
// 对响应数据做点什么
return response;
},
error => {
if (error.response) {
// 根据 HTTP 状态码进行不同的错误处理
switch (error.response.status) {
case 403:
// 403 Forbidden
handle403Error(error);
break;
// 其他状态码处理
default:
console.error('Unexpected error:', error);
}
} else if (error.request) {
// The request was made but no response was received
console.error('No response received:', error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.error('Error setting up request:', error.message);
}
return Promise.reject(error);
}
);
export default instance;
function handle403Error(error) {
// 清除本地存储的 token
localStorage.removeItem('accessToken');
// 重定向到登录页面
window.location.href = '/login';
}
确保在你的Vue应用中导入并使用配置好的Axios实例:
// src/main.js
import Vue from 'vue';
import App from './App.vue';
import http from './http'; // 导入配置好的Axios实例
Vue.prototype.$http = http; // 将Axios实例挂载到 Vue 原型上
new Vue({
render: h => h(App),
}).$mount('#app');
在你的Vue组件中,你可以直接使用this.$http
来发起请求,并且所有的请求都会经过上面配置的拦截器:
<template>
<div>
<button @click="fetchData">Fetch Data</button>
</div>
</template>
<script>
export default {
methods: {
fetchData() {
this.$http.get('/api/data')
.then(response => {
console.log('Data fetched:', response.data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
},
},
};
</script>
http.js
中配置Axios实例,并添加请求和响应拦截器。
Authorization
头。handle403Error
函数来处理。handle403Error
函数,用于清除本地存储的accessToken
并重定向到登录页面。
this.$http
。
通过这样的配置,可以确保当API请求返回403状态码时,能够自动清除用户的认证信息并重定向到登录页面。同时,这种方法也为其他类型的错误处理提供了一种统一的方式。