vue中对axios简单封装

经常使用到vue,axios封装也是比较常见的,可优化代码可读性 ,代码如下:


import axios from "axios"
const baseURL = "https://...."
const distance = axios.create({
    baseURL:baseURL
});
import { Message } from 'element-ui';
function http(url,type,param){ // 接口地址 、 接口类型 、接口参数
    return new Promise((reslove,reject) => {
        let tmps = param ? param : {}
        distance[type](url, tmps)
        .then( res => {
            res.status == 200 ? reslove(res) : reject(res.response)
        })
    })
}
//请求拦截
distance.interceptors.request.use(config =>{
    let token = sessionStorage.getItem("token");
    if(token !== ''){
        let tmp = token.substr(1,token.length-1);
        config.headers["Authority-Token"] = tmp.substr(0,token.length-2);
    }
    return config;
})
//响应拦截
distance.interceptors.response.use(config=>{
    return config;
}, err => {
    console.log(err)
    if(err.response.status == 400 || err.response.status_code == 400){
        Message.error(err.response.data.message);
    }
    if(err.response.data.message == "token已过期,请重新登录"){
        sessionStorage.setItem("token","")
        sessionStorage.setItem("user","")
        window.location.reload();
    }
    return err;
})

export const Login = function (user,pwd) { 
    return http("/login", 'post', {user,pwd});
}
posted @ 2021-07-28 17:15  忧伤还是快乐i  阅读(85)  评论(0)    收藏  举报