import userInfo from '@/stores/userInfo'
|
import axios from 'axios'
|
import axiosAdapterUniapp from 'axios-adapter-uniapp'
|
import {ip,port} from './config.js'
|
/* const store = userInfo() */
|
|
const request = axios.create({
|
baseURL: `http://${ip}:${port}`, // 注意!! 这里是全局统一加上了 后端接口前缀 前缀,后端必须进行跨域配置!
|
adapter: axiosAdapterUniapp,
|
timeout: 15000
|
})
|
|
//
|
|
// request 拦截器
|
// 可以自请求发送前对请求做一些处理
|
// 比如统一加token,对请求参数统一加密
|
request.interceptors.request.use(config => {
|
const userStore=userInfo()
|
config.headers['Content-Type'] = 'application/json;charset=utf-8'
|
if(userStore.user){
|
config.headers['satoken'] = userStore.user.token
|
}
|
// 设置请求头
|
return config
|
}, error => {
|
return Promise.reject(error)
|
});
|
|
// response 拦截器
|
// 可以在接口响应后统一处理结果
|
request.interceptors.response.use(
|
response => {
|
const userStore=userInfo()
|
let res = response.data
|
if(res === undefined){
|
return Promise.reject('服务器响应超时,请检查')
|
}
|
//传递报错信息,把报错信息传递到pinia中
|
userStore.setResponseCode(parseInt(res.code),res.msg)
|
if(res.code!=='200' ){
|
switch(res.code){
|
case '402' :
|
uni.reLaunch({
|
url: `/pages/index/index`
|
})
|
break;
|
}
|
if(response.config.responseType !== 'blob'){
|
return Promise.reject(res.code)
|
}
|
}
|
|
// 如果是返回的文件
|
if (response.config.responseType === 'blob') {
|
return res
|
}
|
// 兼容服务端返回的字符串数据
|
if (typeof res === 'string') {
|
res = res ? JSON.parse(res) : res
|
}
|
return res;
|
},
|
error => {
|
console.log('err' + error) // for debug
|
return Promise.reject(error)
|
}
|
)
|
|
|
export default request
|