aigc-h5/src/io/request.js

87 lines
1.9 KiB
JavaScript

import axios from 'axios'
import { localCache } from '@/io/cache'
import { showToast } from 'vant'
import { useAuthModal } from '@/stores/authModal';
const service = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL,
timeout: 200000,
withCredentials: false
})
service.interceptors.request.use(
config => {
const token = localCache.get('auth') && localCache.get('auth').token;
if (token) {
config.headers[
'Authorization'
] = `Bearer ${token}`
}
if (config.requestBaseUrl == 'chat') {
config.baseURL = import.meta.env.VITE_API_CHAT_URL
}
return config
},
error => {
return Promise.reject(error)
}
)
service.interceptors.response.use(
response => {
const { requestBaseUrl } = response.config
const res = response.data
const authModal = useAuthModal();
if (requestBaseUrl == 'chat') {
return res
} else {
if (res.status != 0) {
if (res.status == 401) {
authModal.setAuthModalType('login');
authModal.showAuthModal();
localCache.remove('auth');
localCache.remove('userInfo');
} else {
showToast(res.msg || 'Error')
}
return Promise.reject(res.message || 'Error')
} else {
return res.data
}
}
},
error => {
const authModal = useAuthModal();
if (error.message == 'canceled') return Promise.reject(error)
const res = error.response?.data
const { requestBaseUrl } = error.config
if (requestBaseUrl == 'chat') {
if (res.errcode == 401) {
authModal.setAuthModalType('login');
authModal.showAuthModal();
localCache.remove('auth');
localCache.remove('userInfo');
} else {
showToast(res.errmsg || 'Error')
}
return Promise.reject(res)
} else {
showToast(res.errmsg || 'Error')
return Promise.reject(error)
}
}
)
export default service