123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import axios from 'axios'
- // import store from '@/store'
- // import { getToken } from '@/utils/auth'
- import { loginUrl } from '@/apiConfig/requestIP.js'
- import { Encrypt } from '@/utils/crypto-js.js'
- import { message } from '@/utils/mesDebounce'
- import router from '@/router/index.js'
- import store from '@/store/index.js'
- // create an axios instance
- const service = axios.create({
- baseURL: '/apis', // url = base url + request url
- timeout: 5000, // request timeout
- withCredentials: true
- })
- service.interceptors.request.use(
- config => {
- config.headers['secret'] = Encrypt()
- // config.retry = 2// 如果请求超时,重试次数
- // config.retryInterval = 1000 // 重试间隔
- return config
- },
- error => {
- return Promise.reject(error)
- }
- )
- service.interceptors.response.use(
- response => {
- const res = response.data
- if (typeof res.code !== 'undefined' && res.code !== 200 && res.code !== 0) {
- message({
- message: res.msg || 'Error',
- type: 'error',
- duration: 5 * 1000
- })
- } else if (typeof res.retCode !== 'undefined' && res.retCode !== 0) {
- message({
- message: res.retMsg || 'Error',
- type: 'error',
- duration: 5 * 1000
- })
- }
- return res
- },
- error => {
- if (error && error.response) {
- switch (error.response.status) {
- case 400:
- error.message = '错误请求'
- break
- case 401:
- error.message = '未授权,请重新登录'
- break
- case 404:
- error.message = '请求错误,未找到该资源'
- break
- case 405:
- error.message = '请求方法未允许'
- break
- default:
- error.message = '服务出现异常,请稍后再试或联系管理员'
- }
- if (error.response.status !== 403) {
- message({
- message: error.message,
- type: 'warning',
- duration: 5 * 1000
- })
- }
- if (error.response.status === 401) {
- location.href = loginUrl
- } else if (error.response.status === 403) {
- store.dispatch('global/setBizId', -1)
- store.dispatch('global/setBizName', '')
- router.push({ name: 'notAccess' })
- }
- }
- return Promise.reject(error)
- }
- )
- // function axiosRetryInterceptor(res) {
- // const config = res.config
- // // 无网络状态或者请求超时
- // if (!config || !config.retry) return Promise.reject(res)
- // // 记录重新请求的次数
- // config.retryCount = config.retryCount || 0
- // // 检查重新请求的次数是否超过我们设定的请求次数
- // if (config.retryCount >= config.retry) {
- // return Promise.reject(res)
- // }
- // // 重新请求的次数自增
- // config.retryCount += 1
- // // 创建新的Promise来处理重新请求的间隙
- // const back = new Promise(function(resolve) {
- // console.log('接口' + config.url + '请求超时,重新请求')
- // setTimeout(function() {
- // resolve()
- // }, config.retryInterval || 500)
- // })
- // // 返回axios的实体,重试请求
- // return back.then(function() {
- // return service(config)
- // })
- // }
- export default service
|