diff --git a/src/api/request/http.js b/src/api/request/http.js index f6a0288..9a49dc5 100644 --- a/src/api/request/http.js +++ b/src/api/request/http.js @@ -1,27 +1,42 @@ import axios from 'axios' import { Message } from 'element-ui' -import store from '../../store' import { getToken } from '@/utils/auth' +import store from '@/store' const instance = axios.create({ - baseURL: 'http://111.198.10.15:21403' + baseURL: process.env.BASE_API, // api 的 base_url + timeout: 50000 // 请求超时时间 }) // 请求守卫 instance.interceptors.request.use(config => { config.headers.token = getToken() return config }) -instance.interceptors.response.use(res => { - console.log(res, '=======response======') - const { code, data, message } = res.data - if (code === 200) { - console.log('200 =============') - return data || code +instance.interceptors.response.use(response => { + /** + * code为非200是抛错 可结合自己业务进行修改 + */ + const res = response.data + // 如果是文件 + if (res instanceof Blob) { + return response + } else if (res.code !== 200) { + // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了; + if (res.code === 401 || res.code === 50012 || res.code === 50014) { + store.dispatch('FedLogOut').then(() => { + location.reload() // 为了重新实例化vue-router对象 避免bug + }) + } else { + Message({ + showClose: true, + message: res.message, + type: 'error', + duration: 3000 + }) + return Promise.reject(res) + } } else { - console.log('!=200 ============') - // 对非正常请求进行处理 - Message.error(message) - return '' + return res.data } }, err => { diff --git a/src/api/request/http.js b/src/api/request/http.js index f6a0288..9a49dc5 100644 --- a/src/api/request/http.js +++ b/src/api/request/http.js @@ -1,27 +1,42 @@ import axios from 'axios' import { Message } from 'element-ui' -import store from '../../store' import { getToken } from '@/utils/auth' +import store from '@/store' const instance = axios.create({ - baseURL: 'http://111.198.10.15:21403' + baseURL: process.env.BASE_API, // api 的 base_url + timeout: 50000 // 请求超时时间 }) // 请求守卫 instance.interceptors.request.use(config => { config.headers.token = getToken() return config }) -instance.interceptors.response.use(res => { - console.log(res, '=======response======') - const { code, data, message } = res.data - if (code === 200) { - console.log('200 =============') - return data || code +instance.interceptors.response.use(response => { + /** + * code为非200是抛错 可结合自己业务进行修改 + */ + const res = response.data + // 如果是文件 + if (res instanceof Blob) { + return response + } else if (res.code !== 200) { + // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了; + if (res.code === 401 || res.code === 50012 || res.code === 50014) { + store.dispatch('FedLogOut').then(() => { + location.reload() // 为了重新实例化vue-router对象 避免bug + }) + } else { + Message({ + showClose: true, + message: res.message, + type: 'error', + duration: 3000 + }) + return Promise.reject(res) + } } else { - console.log('!=200 ============') - // 对非正常请求进行处理 - Message.error(message) - return '' + return res.data } }, err => { diff --git a/src/main.js b/src/main.js index ba78b41..dec6221 100644 --- a/src/main.js +++ b/src/main.js @@ -20,7 +20,7 @@ import SearchItem from '@/components/SearchArea/SearchItem' import AppContainer from '@/components/layout/AppContainer' -//富文本 +// 富文本 import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' @@ -45,11 +45,13 @@ import axios from 'axios' import service from '@/utils/request' +import { instance } from '@/api/request/http' axios.get('./config/project.config.json').then((result) => { console.log('get config') Vue.prototype.baseConfig = result.data document.title = result.data.title // 首先设置网页的title - service.defaults.baseURL = result.data.baseUrl // 设置默认请求网址 + service.defaults.baseURL = result.data.baseUrl // 设置默认请求网址,utils/request中基础路径 + instance.defaults.baseURL = result.data.baseUrl // 设置默认请求网址,api/request/http中的基础路径 new Vue({ router, store, diff --git a/src/api/request/http.js b/src/api/request/http.js index f6a0288..9a49dc5 100644 --- a/src/api/request/http.js +++ b/src/api/request/http.js @@ -1,27 +1,42 @@ import axios from 'axios' import { Message } from 'element-ui' -import store from '../../store' import { getToken } from '@/utils/auth' +import store from '@/store' const instance = axios.create({ - baseURL: 'http://111.198.10.15:21403' + baseURL: process.env.BASE_API, // api 的 base_url + timeout: 50000 // 请求超时时间 }) // 请求守卫 instance.interceptors.request.use(config => { config.headers.token = getToken() return config }) -instance.interceptors.response.use(res => { - console.log(res, '=======response======') - const { code, data, message } = res.data - if (code === 200) { - console.log('200 =============') - return data || code +instance.interceptors.response.use(response => { + /** + * code为非200是抛错 可结合自己业务进行修改 + */ + const res = response.data + // 如果是文件 + if (res instanceof Blob) { + return response + } else if (res.code !== 200) { + // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了; + if (res.code === 401 || res.code === 50012 || res.code === 50014) { + store.dispatch('FedLogOut').then(() => { + location.reload() // 为了重新实例化vue-router对象 避免bug + }) + } else { + Message({ + showClose: true, + message: res.message, + type: 'error', + duration: 3000 + }) + return Promise.reject(res) + } } else { - console.log('!=200 ============') - // 对非正常请求进行处理 - Message.error(message) - return '' + return res.data } }, err => { diff --git a/src/main.js b/src/main.js index ba78b41..dec6221 100644 --- a/src/main.js +++ b/src/main.js @@ -20,7 +20,7 @@ import SearchItem from '@/components/SearchArea/SearchItem' import AppContainer from '@/components/layout/AppContainer' -//富文本 +// 富文本 import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' @@ -45,11 +45,13 @@ import axios from 'axios' import service from '@/utils/request' +import { instance } from '@/api/request/http' axios.get('./config/project.config.json').then((result) => { console.log('get config') Vue.prototype.baseConfig = result.data document.title = result.data.title // 首先设置网页的title - service.defaults.baseURL = result.data.baseUrl // 设置默认请求网址 + service.defaults.baseURL = result.data.baseUrl // 设置默认请求网址,utils/request中基础路径 + instance.defaults.baseURL = result.data.baseUrl // 设置默认请求网址,api/request/http中的基础路径 new Vue({ router, store, diff --git a/src/utils/request.js b/src/utils/request.js index 02dcee1..1074dae 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -13,9 +13,7 @@ service.interceptors.request.use( config => { if (store.getters.token) { - console.log('request.js gettoken') config.headers['token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 - console.log(config.headers['token']) } return config },