| | |
| | | import axios from 'axios'; |
| | | import store from '@/store'; |
| | | import { getToken } from '@/utils/auth'; |
| | | |
| | | // 生产环境和开发环境切换请求地址 |
| | | let baseURL = 'http://localhost:8100/bl/'; |
| | | if (process.env.NODE_ENV === 'production') { |
| | | baseURL = location.protocol + '//' + location.host + '/bl/'; |
| | | } |
| | | |
| | | // create an axios instance |
| | | const service = axios.create({ |
| | | baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url |
| | | // withCredentials: true, // send cookies when cross-domain requests |
| | | timeout: 5000 // request timeout |
| | | baseURL: baseURL, // url = base url + request url |
| | | withCredentials: true, // send cookies when cross-domain requests |
| | | // timeout: 20000 // request timeout |
| | | }); |
| | | |
| | | // request interceptor |
| | | service.interceptors.request.use( |
| | | config => { |
| | | // do something before request is sent |
| | | |
| | | if (store.user().token) { |
| | | // let each request carry token |
| | | // ['X-Token'] is a custom headers key |
| | | // please modify it according to the actual situation |
| | | config.headers['X-Token'] = getToken(); |
| | | } |
| | | return config; |
| | | }, |
| | | error => { |
| | |
| | | * You can also judge the status by HTTP Status Code |
| | | */ |
| | | response => { |
| | | const res = response.data; |
| | | |
| | | // if the custom code is not 20000, it is judged as an error. |
| | | if (res.code !== 20000) { |
| | | ElMessage({ |
| | | message: res.message || 'Error', |
| | | type: 'error', |
| | | duration: 5 * 1000 |
| | | }); |
| | | |
| | | // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; |
| | | if (res.code === 50008 || res.code === 50012 || res.code === 50014) { |
| | | // to re-login |
| | | ElMessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { |
| | | confirmButtonText: 'Re-Login', |
| | | cancelButtonText: 'Cancel', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | store.user().resetToken(); |
| | | location.reload(); |
| | | }); |
| | | } |
| | | return Promise.reject(new Error(res.message || 'Error')); |
| | | } else { |
| | | return res; |
| | | } |
| | | return response.data; |
| | | }, |
| | | error => { |
| | | console.log('err' + error); // for debug |
| | | ElMessage({ |
| | | message: error.message, |
| | | type: 'error', |
| | | duration: 5 * 1000 |
| | | }); |
| | | return Promise.reject(error); |
| | | } |
| | | ); |