import axios from 'axios'
import { ElMessage } from 'element-plus'
const service = axios.create({
baseURL: process.env.VUE_APP_URL,
headers: {
'X-GW-AccessKey': window._env_.accessKey,
},
})
service.defaults.headers.post['Content-Type'] =
'application/x-www-form-urlencoded;charset=UTF-8'
service.defaults.retry = 1
service.defaults.retryDelay = 500
service.interceptors.request.use(
(config) => {
return config
},
(err) => {
return Promise.reject(err)
}
)
service.interceptors.response.use(
(response) => {
if (
response.data.code &&
response.data.code != 200 &&
response.data.code != 0 &&
!response.data.success &&
response.data.message
) {
ElMessage({
type: 'error',
message: response.data.message,
})
console.log('response error: ', response.data.message)
}
return response
},
(error) => {
let config = error.config
if (!config || !config.retry) return Promise.reject(error)
config.__retryCount = config.__retryCount || 0
if (config.__retryCount >= config.retry) {
return Promise.reject(error)
}
config.__retryCount += 1
let backoff = new Promise(function (resolve) {
setTimeout(function () {
resolve()
}, config.retryDelay || 1)
})
return backoff.then(function () {
return service(config)
})
}
)
export default service