使用promise封装axios

一.封装api.js

    import axios from 'axios';
    import router from '../router'; 
    axios.defaults.timeout = 100000;
    /*const apiUrl = 'http://shopping.zhongguotengcha.com';*/
    const apiUrl = 'http://vinetea.weibeicc.com';
    
    axios.interceptors.request.use(
      (config) => {
        let pathUrl = [
          '/index/login_with_pwd',
          '/index/login_with_msgCode',
          '/mobileCode/send_mobile_code',
          '/index/register',
          '/mobileCode/check_code_no_login',
          '/index/reset_loginPwd',
        ];
        const token = JSON.parse(window.localStorage.getItem('token')) || '';
        if (!pathUrl.some((it) => config.url.endsWith(it))) {
          if (token) {
            config.headers['Authorization'] = `${token}`;
          }
        }
        return config;
      },
      function(error) {
        // Do something with request error
        return Promise.reject(error);
      }
    );
    
    axios.interceptors.response.use(
      function(response) {
        if (!response.config.url.endsWith('/user/get_user_by_token')) {
          // Do something with response data
          if (response.data.code === 403) {
            router.push({ path: '/login' });
          }
        }
        return response;
      },
      function(error) {
        // Do something with response error
        return Promise.reject(error);
      }
    );
    
    const axiosPost = (url, params = {}) => {
      return new Promise((resolve, reject) => {
        axios
          .post(apiUrl + url, params)
          .then(
            (response) => {
              resolve(response.data);
            },
            (err) => {
              reject(err);
            }
          )
          .catch((error) => {
            reject(error);
          });
      });
    };
    
    const axiosGet = (url, params = {}) => {
      return new Promise((resolve, reject) => {
        axios
          .get(apiUrl + url, {
            params: params,
          })
          .then(
            (response) => {
              resolve(response.data);
            },
            (err) => {
              reject(err);
            }
          )
          .catch((error) => {
            reject(error);
          });
      });
    };
    
    export default {
      get: axiosGet,
      post: axiosPost,
    };


二.使用 
方法1:
1.main.js
	import ajax from "./data/api.js"
	Vue.prototype.$ajax = ajax;
2.app.vue
	let params = {
			page:1
	}
	this.$ajax.get("/top/femaleNameApi",params).then((res)=>{
			console.log(res);
	})
方法2:加入await和ansyc的使用

created:async function(){
let params = {
page:1
}
await this.femaleNameApi(params);
},
methods:{
async femaleNameApi(params){
let res = await this.$ajax.get("/top/femaleNameApi",params);
console.log(res.data);
}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值