0
点赞
收藏
分享

微信扫一扫

vue 请求

自由的美人鱼 2022-02-17 阅读 38

config>dev.env.js~prod.env.js

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  BASE_API: '"https://xxx.xxx.com"'
})

src>utils>request.js

import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
// import store from '../store'
// import { getToken } from '@/utils/auth'

// 创建axios实例
const service = axios.create({
  baseURL: process.env.BASE_API, // api的base_url
  timeout: 15000000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(config => {
  return config
  // console.log('config',config)
  // if (store.getters.token) {
    // config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  // }
  //return config;//need update
  // if(config.url.indexOf('/GetUserFun')>-1 ||config.url.indexOf('/Home/SendMessage')>-1 )>-1 ){
  //   return config
  // }
  // else{
  //   let apis = store.getters.ApiList;
  //   if(apis.some(item=> config.url.indexOf(item.url)>-1)){
  //     return config
  //   }
  //   else{
  //     console.log(config.url)
  //     Message({
  //       message: '无法登录',
  //       type: 'error',
  //       duration: 3 * 1000
  //     })
  //   }
  // }
  
}, error => {
  // Do something with request error
  // console.log(error) // for debug
  Promise.reject(error)
})

// respone拦截器
service.interceptors.response.use(
  response => {
  /**
  * code为非200是抛错 可结合自己业务进行修改
  */
    const res = response
    if (res.data.Success == false) {
      // 401:未登录;
      if (res.status === 401 || res.data.ErrorCode==409) {
        let msg = '你已被登出'
        if(res.data.ErrorCode==409){
          msg = res.data.Msg
        }
        MessageBox.confirm( msg + ',可以取消继续留在该页面,或者重新登录', '确定登出', {
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          store.dispatch('FedLogOut').then(() => {
            location.reload()// 为了重新实例化vue-router对象 避免bug
          })
        })
      }else{
        Message({
          message: res.data.Msg,
          type: 'error',
          duration: 3000
        })
      }
      return Promise.reject('error')
    }
     else {
      if(response.data.code==500||response.status ==500){
        Message({
          message: response.data.Msg?response.data.Msg:'服务出现错误',
          type: 'error',
          duration: 3000
        })
      }else{
        return response.data
      }
    }
  },
  error => {
    if(error.response){
      if(error.response.data.error=='invalid_grant'){
        return error.response.data
      }
    }
  }
)
export default service

src>api>index.js

import request from '@/utils/request'

export function Getxxx(data) {
  return request({
    url:'/xx/xx/xxx',
    method:'post',
    data:data
  })
}

页面请求

 methods: {
    init() {
      Getxxx({}).then((res) => {})
    }
   }
举报

相关推荐

0 条评论