Admin.UI/src/utils/request.js

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

import axios from 'axios'
import store from '@/store'
import { toLogout } from '@/router'
import Vue from 'vue'
import { refresh } from '@/api/admin/auth'

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
axios.defaults.headers['Cache-Control'] = 'no-cache'
axios.defaults.headers['Pragma'] = 'no-cache'
const requestAxios = axios.create({
  baseURL: '', // url = base url + request url
  timeout: 20000 // 请求延时
})

// 拦截请求
requestAxios.interceptors.request.use(
  config => {
    if (config.api?.auth === false) {
      return config
    }
    const token = store.getters.token
    if (token) {
      config.headers.Authorization = 'Bearer ' + token
    }

    return config
  },
  err => {
    return Promise.reject(err)
  }
)

// 拦截响应
requestAxios.interceptors.response.use(
  response => {
    const { config, data } = response
    if (!data.success && !config.api?.noErrorMsg && data.msg) {
      const duration = config.api?.msgDuration >= 0 ? config.api?.msgDuration : 3000
      Vue.prototype.$message.error({
        message: data.msg,
        duration: duration
      })
    }
    return data
  },
  async error => {
    const res = { success: false, code: 0, msg: '' }

    if (error?.response) {
      if (error.config._request) {
        return res
      }

      const { config, data, status } = error.response
      if (_.isNumber(status)) {
        res.code = status
      }
      if (_.isPlainObject(data)) {
        _.merge(res, data)
      } else if (_.isString(data)) {
后面还有 31 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。