axios拦截器阻止发送请求

axios拦截器

import axios from "axios";
import {
          
    config } from "vue/types/umd";

const service=axios.create({
          
   
    baseURL : "http://xxxxx",
    withCredentials:true,
    headers:{
          
   
        Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    }
})
service.interceptors.request.use(
    config =>{
          
   
        config.headers[token]="123123123"
        return config;
    },
    error =>{
          
   
        return Promise.reject(error)
    }
)
service.interceptors.response.use(
    response => {
          
   
        const res =response.data
        if(res.code != 200){
          
   
            return "请求失败"
        }else {
          
   
            return res;
        }
    }
)
export default service;

如何阻止请求

原理:通过axios提供的cancelToken来进行拦截

话不多说,上代码:

// 使用CancelToken来进行拦截
let CancelToken =axios.CancelToken;
let source = CancelToken.source();

export function get(url,param){
          
   
    return Promise((reject,reiove)=>{
          
   
        service.get(url,param,{
          
   
            CancelToken : source.token
        }).then(res=>{
          
   
            reject.response(res)
        }).catch((e)=>{
          
   
            console.log(e);
        })
    })
}
//拦截的话可以用
source.cancel(想要打印的话)

这里分享一个坑,就是当我们拦截了一个请求后,发现后面同样的接口一样会报错,这时候我们只需要再次创建一个source对象就好了 如下:

let source = CancelToken.source();
经验分享 程序员 微信小程序 职场和发展