vue实现http拦截
Vue 实现 HTTP 拦截
在 Vue 项目中,通常通过 Axios 实现 HTTP 拦截功能,用于统一处理请求和响应。以下是具体实现方法:
安装 Axios
通过 npm 或 yarn 安装 Axios:
npm install axios
# 或
yarn add axios
创建 Axios 实例
在 src 目录下创建 utils/request.js 文件,配置基础实例:
import axios from 'axios'
const service = axios.create({
baseURL: 'https://api.example.com', // 基础地址
timeout: 5000 // 请求超时时间
})
请求拦截器
在发送请求前统一添加 token 或修改配置:
service.interceptors.request.use(
config => {
const token = localStorage.getItem('token')
if (token) {
config.headers['Authorization'] = `Bearer ${token}`
}
return config
},
error => {
return Promise.reject(error)
}
)
响应拦截器
处理响应数据和错误:
service.interceptors.response.use(
response => {
const res = response.data
if (res.code !== 200) {
alert(res.message || 'Error')
return Promise.reject(new Error(res.message || 'Error'))
}
return res
},
error => {
if (error.response.status === 401) {
alert('登录过期,请重新登录')
router.push('/login')
}
return Promise.reject(error)
}
)
导出实例
export default service
在组件中使用
在 Vue 组件中导入并使用:
import request from '@/utils/request'
export default {
methods: {
fetchData() {
request.get('/user/info').then(response => {
console.log(response)
})
}
}
}
全局挂载(可选)
在 main.js 中全局挂载:
import request from './utils/request'
Vue.prototype.$http = request
通过以上步骤可以实现请求和响应的统一拦截处理,适用于 token 验证、错误处理等场景。拦截器逻辑可根据实际需求调整。







