yuebonui-vue3/src/utils/request.js

(开头部分) 3KB

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

import axios from 'axios'
import store from '@/store'
import { ElMessageBox, ElMessage } from 'element-plus'
import { getToken, saveRefreshtime, getTokenRefreshTime } from '@/utils/auth'
import { sign, GetRandomString } from '@/utils/yuebon'

// 是否显示重新登录
export let isRelogin = { show: false };
// create an axios instance
const service = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 10000 // request timeout
})

service.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
// request拦截器
service.interceptors.request.use(
  config => {
    if (config.headers['Content-Type'] === undefined) { config.headers['Content-Type'] = 'application/json;charset=UTF-8' }
    const token = getToken()
    if (token) {
      config.headers['Authorization'] = 'Bearer ' + token
    }
    // 如果接口需要签名, 则通过请求时,headers中传递sign参数true
    const iSSign = config.headers['sign']
    if (iSSign || iSSign === undefined) {
      const timeStamp = new Date().getTime().toString().substring(0, 10)
      const nonce = GetRandomString()
      config.headers['appId'] = store.getters.appId
      config.headers['nonce'] = nonce
      config.headers['timeStamp'] = timeStamp
      config.headers['signature'] = sign(config, nonce, timeStamp, store.getters.appSecret)
    }
    saveRefreshtime()
    return config
  },
  error => {
    // do something with request error
    return Promise.reject(error)
  }
)

/**
 * 
 * 响应拦截
 */
service.interceptors.response.use(
  response => {
    const res = response.data
    if (res.ErrCode !== '0') {
      if (res.ErrCode === '401') { // token过期自动刷新token
        var curTime = new Date()
        var refreshtime = new Date(Date.parse(getTokenRefreshTime))
        // 在用户操作的活跃期内
        if (getTokenRefreshTime && (curTime <= refreshtime)) {
          store.dispatch('ResetToken').then((res) => {
            location.reload()
          })
        }
      } else if (res.ErrCode === '403') {
后面还有 58 行代码,解锁后查看完整代码

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

AI 解读 AI

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

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