Axios(自定义配置新建一个 axios 实例并且封装起来)

自定义配置新建一个 axios 实例

  1. 先在src里面的某个文件夹里面创建一个.js文件(我的放在了http.js里面)
  2. http.js里面的核心源码:
    import axios from 'axios';
    import Qs from 'qs'
    import router from '../router/index'const service = axios.create({//这个service是自定义(你自己起的名字)baseURL: 'http://xxxx.xxxxxxxxx.com/',//请求的公共地址timeout: 5000, // 请求超时时间// headers: {'X-Custom-Header': 'foobar'}
    });service.interceptors.request.use(function (config) {// 在发送请求之前做些什么console.log(123);return config;
    }, function (error) {// 对请求错误做些什么return Promise.reject(error);
    });//http response 拦截器
    //简单点说就是每次得到数据前都要经过这里
    service.interceptors.response.use(response => {const res = response.data;console.log(res);if (res.ret === 0) {//请求失败后台给的协议ret等于0if (res.errcode == 101) {//101router.push({path: '/login'})}else {alert(res.msg);return res;}}else {return res;}},error => {// TODO 弹窗处理alert(error.message);return Promise.reject(error)}
    )//封装put、get、post、delete、patch
    export function requestStringify(method, params = {}, beToken = true) {let token, session_id;if (beToken) {let tokenData = getToken();if (tokenData) {let res = JSON.parse(tokenData);token = res.token//获取到tokensession_id = res.session_id//获取到session_id}}switch (method) {case 'get':return {token, session_id, ...params};case 'put':case 'delete':case 'post':case 'patch':if (beToken) {return Qs.stringify({token, session_id, ...params})} else {return Qs.stringify({...params})}}
    }const TokenKey = 'H5-Token';//对token进行处理
    export function getToken() {//获取TokenKey值return window.localStorage.getItem(TokenKey)
    }export function setToken(tokenData) {//设置TokenKey值return localStorage.setItem(TokenKey, JSON.stringify(tokenData))
    }export function removeToken() {//return window.localStorage.removeItem(TokenKey)
    }export default service //导出去

     


关联到index.vue页面来 

核心源码:

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部