create-base
Version:
快速构建项目基础框架,支持vue/uni-app/后台管理模板等
68 lines (63 loc) • 1.63 kB
JavaScript
import uniAjax from 'uni-ajax'
import { network } from '@/config'
import { useUserStore } from '@/stores/user'
const service = uniAjax.create({
baseURL: network.baseURL,
timeout: network.timeout
})
// 请求拦截
service.interceptors.request.use(
config => {
const userStore = useUserStore()
const token = userStore.token
if (token) {
config.header.Authorization = token
}
return config
},
error => {
return Promise.reject(error)
}
)
// 响应拦截
service.interceptors.response.use(
// 处理响应成功情况
response => {
const { code, message, data } = response.data
const userStore = useUserStore()
// 处理自定义响应状态码
switch (code) {
// 响应正常返回响应数据
case 200:
return data
// 处理token无效情况
case 401:
uni.showToast({ title: '请先登录', icon: 'error' })
userStore.clear()
setTimeout(() => {
uni.reLaunch({ url: '/pages/index' })
}, 500)
break
default:
uni.hideLoading()
uni.showModal({
title: 'Error: ' + (code || 'Unknown'),
content: message,
showCancel: false
})
}
return Promise.reject(message || 'Response Error')
},
// 处理网络超时或http状态码非2xx情况
error => {
const { statusCode, errMsg } = error
uni.hideLoading()
uni.showModal({
title: 'Error: ' + (statusCode || 'Unknown'),
content: errMsg,
showCancel: false
})
return Promise.reject(errMsg || 'Network Error')
}
)
export default service