create-base
Version:
快速构建项目基础框架,支持vue/uni-app/后台管理模板等
62 lines (57 loc) • 1.53 kB
JavaScript
import { createService } from 'uni-io'
import { network } from '@/config/index'
import store from '@/store/index'
const service = createService({
baseURL: network.baseURL,
timeout: network.timeout
})
// 请求拦截
service.interceptors.request.use(config => {
// 请求前,附加token到header上
const token = store.state.user.token || uni.getStorageSync('token')
if (token) {
config.header['Authorization'] = token || ''
}
return config
})
// 响应拦截
service.interceptors.response.use(
response => {
// 响应成功处理
const { data } = response
// 自定义响应码处理
switch (data.code) {
case 200:
// 响应正常返回响应数据
return data
case 401:
// token无效处理
store.dispatch('user/logout')
uni.showToast({
title: '请先登录',
icon: 'error'
})
break
default:
uni.hideLoading()
uni.showModal({
title: 'Error: ' + data.code,
content: '系统错误,请联系管理员:' + data.message,
showCancel: false
})
}
return Promise.reject(data.message || 'Error')
},
error => {
// 网络超时或http状态码非200处理
const message = error.data || error.errMsg
uni.hideLoading()
uni.showModal({
title: '温馨提示',
content: '系统错误,请联系管理员:' + message,
showCancel: false
})
return Promise.reject(message)
}
)
export default service