封装axios,统一处理错误返回

index.js:

/**
 * 封装axios get post请求的工具(统一处理错误信息提示,只有在res.failBack为false时才能真正的获取到数据)
 */
import axios from "axios";
import Vue from 'vue';
import { Toast } from 'vant';
// import qs from 'qs';//序列化工具,axios已经下载,可直接引用。什么时候需要序列化?post的请求格式为form-data时使用,即content-type为application/x-www-form-urlencoded时使用;
Vue.use(Toast);
//设置开发/生产公共请求头
axios.defaults.baseURL = process.env.NODE_ENV === 'development' ?"https://test.com":"";
/**
 * 请求拦截
 */
axios.interceptors.request.use(
    function(config) {
      // 如果你想在发送请求前做些事情

      return config;
    },
    function(error) {
      return Promise.reject(error);
    }
);
/**
 * 响应拦截
 */
axios.interceptors.response.use(
    function(config) {
      // 如果你想在获取到数据之后做些事情

      return config;
    },
    function(error) {
      return Promise.reject(error);
    }
);
/**
 * 
 * Ajax方法最终返回一个promise对象。
 * 例如要改变header信息和超时,应当传入{header:{'X-Requested-With': 'XMLHttpRequest'},timeout: 1000}  
 * 
 */
const Ajax= options =>{
    let {method ='get',url='',data={},showLoding=true,other={}} = options;
    if(showLoding){
        Toast.loading({
            duration: 0,       // 持续展示 toast
            forbidClick: true, // 禁用背景点击
            loadingType: 'spinner',
            message: '请稍候...'
        });   
    }
    let axiosOps={
        method,
        url,
        ...other
    };
    if(method=='get'){
        axiosOps.params=data
    }else{
        axiosOps.data = data
    }
    return axios(axiosOps)
        .then(res=>{
            if(showLoding)Toast.clear(true);
            if(res.data.succ){
                return res.data.data;
				//返回一个promise对象
            }else{
                Toast(res.data.errMsg);
                return;
            }
        })
        .catch(err=> {
            if(showLoding)Toast.clear(true);
            Toast("请求数据失败!");
        })
    })
export default Ajax;

api.js

/**
 * 分离请求处理
 */
import Ajax from "./index.js";
//获取天气详情
export const getWeather = data => Ajax({
	method:'post',
	url:'/api/getWeather',
	data
})

页面引用即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值