Vue 请求拦截 request

import axios from 'axios'
axios.defaults.withCredentials=true;
import store from '@/store/index'
import router from '@/router'
import {
  getToken
} from '@/utils/auth'
import NProgress from 'nprogress'
// 是否显示加载圈
NProgress.configure({
  showSpinner: false
})

const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL, // api 的 baseURL
  timeout: 60000, //设置请求时长
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})



//请求拦截器
request.interceptors.request.use(
  config => {
    if (store.state.token) {
      // let each request carry token
      // ['X-Token'] is a custom headers key
      // please modify it according to the actual situation
      // config.headers['X-Token'] = getToken()
      if (getToken()) {  请求头
        config.headers['Authorization'] = getToken()
      }
    }
    NProgress.start()
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
//响应拦截器
request.interceptors.response.use(
  response => {


    if(!response.data.hasOwnProperty("code")){
      if (response.data.substring(0,100).indexOf("<html") != -1){ //如果包含这个请求头 DOCTYPE 则代表  需要重新登陆
        router.push({
          path: '/'
        })
      }
    }

   /* console.log(response.data.indexOf("DOCTYPE"),"打印respose")
    console.log(response,"打印respose2")*/
    NProgress.done()
    return response
  },
  error => {
    NProgress.done()
    //获取状态码
    const status = error.request.status;
    //如果是401则跳转到登录页面
    if (status === 1001) {
      router.push({
        path: '/'
      })
    };
    // 如果请求为非200否者默认统一处理
    // if (status !== 200 && status !== 400) {
    //   Message({
    //     message: JSON.parse(error.request.response).message|| '未知错误',
    //     type: 'error'
    //   });
    // }
    // console.log(error);
    return Promise.reject((typeof error.request.response == 'string') ? JSON.parse(error.request.response) : error.request.response)
  }
)

export default request
 
工作中如果有您解决不了的问题或者您花费2小时还没解决的问题,这里可以有偿帮您高效直接解决bug,wx号:18062748486,备注”bug解决“;

posted on 2022-05-18 12:01  艾小码  阅读(803)  评论(0编辑  收藏  举报

导航