异步 axios 的简单封装


import Vue from "vue";
import axios from "axios";
import qs from "qs";
const vm = new Vue();

// axios是否需要携带Cookie
// axios.defaults.withCredentials = true
// 此封装注意,form表单请求是没有进行拦截的

const URL = process.env.VUE_APP_BASE_API;
//发送一般请求
const http = axios.create({
   timeout: 10000, // 10s请求时间
   baseURL: URL,
   headers: {
      "Content-Type": "application/x-www-form-urlencoded",
   }
});

// 发送from表单请求
const form = axios.create({
   timeout: 10000, //响应时间
   baseURL: URL,
   headers: {
      "Content-Type": "multipart/form-data",
       "Authorization": sessionStorage.getItem("token") ? sessionStorage.getItem("token") : ''
   },
});

// 请求拦截器
http.interceptors.request.use(
   async configs => {
         vm.$toast.loading({
            mask: true,
            message: "加载中..."
         });

		configs.headers.Authorization = "Authorization": sessionStorage.getItem("token") ? sessionStorage.getItem("token") : ''
         return configs;
      },
      err => {
         return err;
      }
);

//  响应拦截
http.interceptors.response.use(async response => {
   vm.$toast.clear();
   if (response.status === 200) {
      return Promise.resolve(response);
   } else {
      return Promise.reject(response);
   }
});

export default {
	URL,
   /**
    * 封装get方法
    * @param url
    * @param data
    * @returns {Promise}
    */
   get(url, params = {}) {
      return new Promise(async resolve => {
         const data = await http.get(url, {
            params
         });
         const code = Number(data.data.code);
         if (code == 200) {
            resolve(data.data);
         } else {
            // 提示报错信息
            resolve(data.data);
            vm.$toast.fail(data.data.msg);
         }
      });
   },

   /**
    * 封装post请求
    * @param url
    * @param data
    * @returns {Promise}
    */
   post(url, params = {}, back = true) {
      return new Promise(async resolve => {
         const data = await http.post(url, qs.stringify(params));
		// 二次封装 可以一直拿到返回值
         const data = await http.post(url, qs.stringify(params));
         // const data = await http.post(url, { params });
         const code = Number(data.data.code);
         if (code == 200) {
            resolve(data.data);
         } else {
            // 提示报错信息
            resolve(data.data);
            vm.$toast.fail(data.data.msg);
         }
      });
   },
    
   /**
    * 封装form请求
    * @param url
    * @param data
    * @returns {Promise}
    */
   form(url, params = {}) {
      return new Promise(async reslove => {
         const data = await form.post(url, params);
         const code = Number(data.data.code);
         if (code === 200) {
            reslove(data.data);
         } else {
            reslove(data.data);
            vm.$toast.fail(data.data.msg);
         }
      });
   }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值