12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { MessagePlugin } from 'tdesign-vue-next';
- import axios from 'axios';
- import { getCookie } from '@/services/cookie';
- import router from './router';
- // axios 配置
- axios.defaults.timeout = 60000;
- axios.defaults.withCredentials = false;
- // http request 拦截器
- axios.interceptors.request.use(
- (config: any) => {
- config.headers.Authorization =
- 'Bearer ' + (localStorage.token || getCookie('token') || '');
- return config;
- },
- (err: any) => Promise.reject(err)
- );
- // http response 拦截器
- axios.interceptors.response.use(
- (response: any) => {
- if (response && response.data && response.data.error) {
- MessagePlugin.error(response.data.error);
- return;
- }
- if (response) {
- if (response.status == undefined) {
- return response;
- }
- return response.data;
- }
- return;
- },
- (error: any) => {
- if (error && !error.response) {
- return;
- }
- if (error && error.response) {
- if (
- error.response.config.url === '/api/account/profile' ||
- error.response.data.error === '此为付费数据,请购买后访问'
- ) {
- return;
- }
- if (
- error.response.status !== 401 &&
- error.response &&
- error.response.data &&
- error.response.data.error
- ) {
- MessagePlugin.error(error.response.data.error);
- return;
- }
- switch (error.response.status) {
- case 401:
- sessionStorage.setItem('cb', encodeURIComponent(location.href));
- MessagePlugin.error('请先登录!');
- // router.replace({ path: '/login' });
- break;
- case 403:
- MessagePlugin.error('请求错误,不合法的请求!');
- break;
- case 404:
- if (error.response.config.url.indexOf('/data/') !== 0) {
- MessagePlugin.error('访问数据不存在,请检查后重试!');
- }
- break;
- case 500:
- MessagePlugin.error('请求服务错误,请稍后重试!');
- break;
- case 504:
- MessagePlugin.error('网络超时,请检测你的网络!');
- break;
- default:
- MessagePlugin.error('未知网络错误!');
- break;
- }
- }
- // return error.response ? error.response.data : error;
- }
- );
- export default axios;
|