• 版本② vue请求接口封装


    封装axios

    import axios from 'axios'
    import { Message } from 'element-ui'
    import store from '@/store'
    import { getToken, removeToken } from '@/utils/auth'
    
    // 创建axios实例
    const service = axios.create({
      baseURL: process.env.BASE_API, // api的base_url
      timeout: 5000 // 请求超时时间
    })
    
    // request拦截器
    service.interceptors.request.use(config => {
      // Do something before request is sent
      if (store.getters.token) {
        config.headers['X-Token'] = getToken()
      }
      return config
    }, error => {
      // Do something with request error
      Promise.reject(error)
    })
    
    // respone拦截器
    service.interceptors.response.use(
      response => {
        const res = response.data
        if(res.code && res.code !== 0) {
          var msg = res.msg || res.data
          if(res.code === 100002) {
            removeToken()
            Message({
              message: '登录超时,请重新登录',
              type: 'error',
              duration: 3 * 1000
            })
            sessionStorage.clear()
            router.replace({
              path: '/login?redirect=/welcome'
            })
            return Promise.reject(res)
          } else {
            Message({
              message: msg || 'Error',
              type: 'error',
              duration: 5 * 1000
            })
            return Promise.reject(new Error(res.msg || 'Error'))
          }
        } else {
          return res
        }
      },
    
      error => {
        const msg = error.response.data.msg
        const statusCode = error.response.status
        const code = error.response.data.code
        if(code && code === 100002 || statusCode && statusCode === 401) {
          removeToken()
          Message({
            message: '登录超时,请重新登录',
            type: 'error',
            duration: 3 * 1000
          })
          sessionStorage.clear()
          router.replace({
            path: '/login?redirect=/welcome'
          })
          return Promise.reject(error)
        } else {
          Message({
            message: msg || error.toString(),
            type: 'error',
            duration: 5 * 1000
          })
        }
        return Promise.reject(error)
      }
    
    export default service
    

    api定义

    import request from '@/utils/request'
    
    export function getTreeData() {
      return request({
          url: `/api/resource/getTreeData`,
          method: 'GET'
      })
    }
    

    使用

    import { getTreeData } from '@/api/resource'
    
    async getTreeData() {
      this.treeLoading = true
      let res = await getTreeData()
      this.treeLoading = false
      if(res && res.code == 0) {
        this.resourceTreeData = res.data
      } else {
        this.$message.error('请求出现错误,请稍后重试');
      }
    },
    
    
  • 相关阅读:
    Linq组合查询与分页组合查询结合
    jQuery常见用法
    验证码制作
    文件上传,图片加水印
    【2017-06-06】Ajax完整结构、三级联动的制作
    【2017-06-05】Jquery.ajax
    JQuery选择器,动画,事件和DOM操作
    Linq高级查询,分页查询及查询分页结合
    Linq基础+Lambda表达式对数据库的增删改及简单查询
    WebForm文件上传
  • 原文地址:https://www.cnblogs.com/pleaseAnswer/p/12487032.html
Copyright © 2020-2023  润新知