1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import axios from 'axios'
- export default {
- install (Vue) {
- const http = axios.create({
- baseURL: process.env.API_URL.default,
- timeout: 60000,
- })
- http.interceptors.request.use(
- config => {
- const [ url, version ] = config.url.split(':').reverse()
- if (version) {
- config.baseURL = process.env.API_URL[version]
- config.url = url
- }
- const token = window.localStorage.getItem('token')
- if (token) config.headers['Authorization'] = token
- return config
- },
- error => {
- return Promise.reject(error)
- }
- )
- http.interceptors.response.use(
- response => {
- const { status, data } = response
- const errorTypes = {
- 401: 'GLOBAL_AUTH_ERROR',
- 500: 'GLOBAL_ERROR',
- }
- if (data.code in errorTypes) {
- const errorData = { status, message: data.message }
- Vue.hub.$emit(errorTypes[data.code], errorData)
- return Promise.reject(errorData)
- }
- return data
- },
- error => {
- // console.log(JSON.parse(JSON.stringify(error)))
- const errorData = { message: '网络超时,请重试' }
- if (error.response) {
- errorData.status = error.response.status
- errorData.message = error.response.data.message
- }
- Vue.hub.$emit('GLOBAL_ERROR', errorData)
- return Promise.reject(errorData)
- }
- )
- Vue.prototype.$http = http
- Vue.http = http
- },
- }
|