create-base
Version:
快速构建项目基础框架,支持vue/uni-app/后台管理模板等
54 lines (49 loc) • 1.23 kB
text/typescript
import axios from 'axios'
import { network } from '@/config/index'
import { useUserStore } from '@/stores/user'
const service = axios.create({
baseURL: network.baseURL,
timeout: network.timeout
})
// 请求拦截器
service.interceptors.request.use(
config => {
const userStore = useUserStore()
const token = userStore.token || localStorage.getItem('token')
if (token) {
config.headers['Authorization'] = token
}
return config
},
error => {
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const { code, data, msg } = response.data
const userStore = useUserStore()
// 处理自定义响应状态码
switch (code) {
case 200:
// 响应正常返回响应数据
return data
case 401:
// 处理 token 无效情况
userStore.clear()
console.log('token无效')
break
default:
// 处理服务器错误情况
console.log('服务器错误')
break
}
return Promise.reject(msg || 'Error')
},
error => {
// 处理网络超时或 http 状态码非 2xx 情况
return Promise.reject(error)
}
)
export default service