axios二次封装

在src目录下创建一个utils文件,里面有三个JS文件,分别时config.js(url、请求方式),core.js(请求拦截,响应拦截,请求超时),index.js(接口文件)
在这里插入图片描述
首先在core.js里面引入axios和vant组件的Toast弹框

在这里插入图片描述

设置超出时间,以及baseURL

在这里插入图片描述

请求拦截、响应拦截

//请求拦截
//请求发送之前
// var loading = null;
axiosInstance.interceptors.request.use((config)=>{
    //拦截成功触发
    // loading = Loading.services()   
     // if(localStorage.getItem("adminToken")){
     //   config.headers.Authorization = "Bearer " + localStorage.getItem("adminToken")
     // }
    Toast.setDefaultOptions({ duration: 0 });
    Toast.setDefaultOptions('loading', { forbidClick: true });
    Toast.loading({
        message: '加载中...',
        forbidClick: true,
        overlay:true,
        duration:0
      });
 
      //console.log(config.headers);
     console.log(config);
    return config;
},(error)=>{
    //请求还没发触发
    //没有网络会触发
    return Promise.reject(error)
})


//响应拦截
axiosInstance.interceptors.response.use((response)=>{
    //对响应数据做些什么
    setTimeout(()=>{
        Toast.clear()
    },1000)
    return response;
},(error)=>{
    //对响应错误做些什么
    //服务器宕机或者没有网络服务器不搭理你 超时 触发
    return Promise.reject(error)
})

请求方式

export function request(methods,url,params){
    switch(methods){
        case "GET":
           return GET(url,params);
        case "POST":
           return POST(url,params);
        case "PUT":
            return PUT(url,params);
    }
}

function GET(url,params){
  return  axiosInstance.get(url,params)
}

function POST(url,params){
   return axiosInstance.post(url,params)
}


function PUT(url,params){
    return axiosInstance.put(url,params)
 }

然后在config.js里设置URL

export const URL = {
    appIndex: "/api/app/recommend/appIndex",
}

export const METHOD = {
//给未定义的魔法值定义一下
    GET: "GET",
    POST: "POST",
    PUT:"PUT"
}

再在接口文件index.js里面引入core.js和config.js

import {request} from "./core"
import {URL,METHOD} from "./config"

export default {
	install(Vue){
		Vue.prototype.$APIClient = this;
	}
	appIndex(){
		return request(METHOD.GET,URL.appIndex)
	}
}

在src目录下的mian.js里写入

import APIClient from "./utils/index";
Vue.use(APIClient)

使用的话就是

 this.$APIClient.appIndex().then(res=>{
			console.log(res)
        }).catch(error=>{
            console.log(error);
        })
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值