Blame view
src/utils/request.js
2.29 KB
80a28914e init |
1 |
import axios from 'axios' |
d7d9c38c2 auto commit the c... |
2 |
import { MessageBox, Message } from 'element-ui' |
80a28914e init |
3 |
import store from '@/store' |
d7d9c38c2 auto commit the c... |
4 |
import { getToken } from '@/utils/auth' |
80a28914e init |
5 6 7 8 9 |
// 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 |
d7d9c38c2 auto commit the c... |
10 |
timeout: 5000 // request timeout |
80a28914e init |
11 12 13 14 15 16 |
}) // request interceptor service.interceptors.request.use( config => { // do something before request is sent |
d7d9c38c2 auto commit the c... |
17 |
|
80a28914e init |
18 19 20 21 |
if (store.getters.token) { // let each request carry token // ['X-Token'] is a custom headers key // please modify it according to the actual situation |
d7d9c38c2 auto commit the c... |
22 |
config.headers['X-Token'] = getToken() |
80a28914e init |
23 24 25 26 27 |
} return config }, error => { // do something with request error |
d7d9c38c2 auto commit the c... |
28 |
console.log(error) // for debug |
80a28914e init |
29 30 31 32 33 34 35 36 37 |
return Promise.reject(error) } ) // response interceptor service.interceptors.response.use( /** * If you want to get http information such as headers or status * Please return response => response |
d7d9c38c2 auto commit the c... |
38 |
*/ |
80a28914e init |
39 40 41 42 43 44 45 46 |
/** * Determine the request status by custom code * Here is just an example * You can also judge the status by HTTP Status Code */ response => { const res = response.data |
d7d9c38c2 auto commit the c... |
47 48 |
// if the custom code is not 20000, it is judged as an error. |
80a28914e init |
49 50 51 52 53 54 |
if (res.code !== 20000) { Message({ message: res.message || 'Error', type: 'error', duration: 5 * 1000 }) |
d7d9c38c2 auto commit the c... |
55 |
// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; |
80a28914e init |
56 57 |
if (res.code === 50008 || res.code === 50012 || res.code === 50014) { // to re-login |
d7d9c38c2 auto commit the c... |
58 59 60 |
MessageBox.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', |
80a28914e init |
61 62 63 |
type: 'warning' }).then(() => { store.dispatch('user/resetToken').then(() => { |
d7d9c38c2 auto commit the c... |
64 |
location.reload() |
80a28914e init |
65 66 67 68 69 |
}) }) } return Promise.reject(new Error(res.message || 'Error')) } else { |
d7d9c38c2 auto commit the c... |
70 |
return res |
80a28914e init |
71 72 73 |
} }, error => { |
d7d9c38c2 auto commit the c... |
74 75 76 77 78 79 |
console.log('err' + error) // for debug Message({ message: error.message, type: 'error', duration: 5 * 1000 }) |
80a28914e init |
80 81 82 83 84 |
return Promise.reject(error) } ) export default service |