Created
December 7, 2019 16:01
-
-
Save mazz/eefeef9e351f6314b670a2294cb7978b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import axios from 'axios' | |
import { Message, MessageBox } from 'element-ui' | |
import { UserModule } from '@/store/modules/user' | |
const service = axios.create({ | |
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url | |
timeout: 5000 | |
// withCredentials: true // send cookies when cross-domain requests | |
}) | |
// Request interceptors | |
service.interceptors.request.use( | |
(config) => { | |
console.log('interceptor config: ', config) | |
// Add X-Access-Token header to every request, you can add other custom headers here | |
if (UserModule.token) { | |
config.headers['X-Access-Token'] = UserModule.token | |
} | |
return config | |
}, | |
(error) => { | |
Promise.reject(error) | |
} | |
) | |
// Response interceptors | |
service.interceptors.response.use( | |
(response) => { | |
console.log('interceptor response: ', response) | |
// Some example codes here: | |
// code == 20000: success | |
// code == 50001: invalid access token | |
// code == 50002: already login in other place | |
// code == 50003: access token expired | |
// code == 50004: invalid user (user not exist) | |
// code == 50005: username or password is incorrect | |
// You can change this part for your own usage. | |
const res = response.data | |
console.log('res : ', response.data) | |
if (res.code !== 20000) { | |
Message({ | |
message: res.message || 'Error', | |
type: 'error', | |
duration: 5 * 1000 | |
}) | |
if (res.code === 50008 || res.code === 50012 || res.code === 50014) { | |
MessageBox.confirm( | |
'你已被登出,可以取消继续留在该页面,或者重新登录', | |
'确定登出', | |
{ | |
confirmButtonText: '重新登录', | |
cancelButtonText: '取消', | |
type: 'warning' | |
} | |
).then(() => { | |
UserModule.ResetToken() | |
location.reload() // To prevent bugs from vue-router | |
}) | |
} | |
return Promise.reject(new Error(res.message || 'Error')) | |
} else { | |
return response.data | |
} | |
}, | |
(error) => { | |
Message({ | |
message: error.message, | |
type: 'error', | |
duration: 5 * 1000 | |
}) | |
return Promise.reject(error) | |
} | |
) | |
export default service |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment