首页 > 其他分享 >封装axios

封装axios

时间:2023-02-08 21:44:43浏览次数:36  
标签:axios 封装 data toastText error config response

import axios from 'axios';

// axios.defaults.timeout = 5000;   //响应时间
// axios.defaults.withCredentials=true;//让请求头携带参数cookie
// axios.defaults.baseURL = '';   //配置接口地址  
// axios.defaults.headers.authKey = Lockr.get('authKey');    //接口请求头authKey   按需修改
// axios.defaults.headers.sessionId =Lockr.get('sessionId');   //接口请求头sessionId  按需修改
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';  //配置请求头
import Qs from 'qs'


const service = axios.create({
    withCredentials: true,
    crossDomain: true,
    // baseURL,
    timeout: 60000
})

//HTTPrequest拦截
service.interceptors.request.use(config => {
    config.headers['hztToken'] = localStorage.getItem('hztToken')
    if (config.method === 'post') {
        if (config.isFormData) {
            //表单提交
            config.headers['Content-Type  '] = 'application/x-www-form-urlencoded;charset-utf-8'
            config.data = Qs.stringify(config.data)
        } else if (config.isUploadFile) {
            //文件上传
            config.headers['Content-Type'] = 'multipart/form-data'
        }
    }
    return config
}, error => {
    return Promise.reject(error)
});

//HTTPresponse拦截
service.interceptors.response.use(response => {
    switch (response.status) {
        case 200:
            return Promise.resolve(response.data)
            break
        case 401:
            toastText = 'token已过期!'
            break
        default:
            uni.hideLoading();
            uni.showToast({
                title: '加载失败',
                duration: 1000,
                icon: 'none'
            });
        return Promise.reject(new Error(response.data || 'Error'))

    }
}, error => {
    uni.hideLoading();
    let toastText = ''
    if(error.response.data && error.response.data.code){
        switch (error.response.data.code) {
            case 4001:
                toastText = 'token不能为空,无访问权限!'
                break
            case 401:
                toastText = 'token已过期!'
                break
            default:
                toastText = '加载失败!'
        }
    }
    
    uni.showToast({
        title: toastText,
        duration: 2000,
        icon: 'none'
    });
    return Promise.reject(new Error(error));

})



export default service;

 

标签:axios,封装,data,toastText,error,config,response
From: https://www.cnblogs.com/gggjp/p/17103393.html

相关文章

  • 08 封装讲解
    封装讲解//alt+insert(Fn)快捷键:自动生成get,set方法/*封装的意义1.提高程序的安全性,保护数据2.隐藏代码的实现细节3.统一接口4.增强系统的可维护性*......
  • ASEMI整流模块MDQ75-16封装,MDQ75-16大小
    编辑-ZASEMI整流模块MDQ75-16参数:型号:MDQ75-16最大重复峰值反向电压(VRRM):1600V最大RMS电桥输入电压(VRMS):1700V最大平均正向整流输出电流(IF):75A峰值正向浪涌电流(IFSM):920A每个二......
  • Axios
    AxiosAxios是一个基于promise网络请求库,作用于node.js和浏览器中。它是isomorphic的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.jshtt......
  • vue+element DatePicker日期选择器封装(可自定义快捷选择时间)
    前言今天封装了一个DatePicker日期选择器,发现带快捷选择的不太好封装,我需要在不同的地方快捷选择不同的时间,并且快捷显示的时间是从昨天开始,在网上找了一圈都没找到便自己......
  • EFCore 封装Repository(可扩展不同数据的sql操作)
    参照:https://www.cnblogs.com/youhui/articles/10813468.html接口类:publicinterfaceIRepository<TEntity,TKey>whereTEntity:class{#region查找......
  • 第11课、封装base
      1.sleep: 进程休眠---等待固定的时间,如等待5秒:sleep(5) 2.implicitly_wait(30):等待页面完全加载完成属于隐式等待--页面加载完成的标志是左上角转圈结束--如......
  • 31-封装
    封装该露的露,该藏的藏◆我们程序设计要追求“高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数......
  • ESD二极管选型选用、封装和经典应用详解
    都知道,静电放电在我们日常生活中是一种很常见的现象。但是,对于电子产品而言,静电放电可能会导致电路中的元器件内部受损,影响产品的正常使用寿命,甚至损坏。为此,做好ESD防护是......
  • EFore 分页查询 链式封装
    此文提供一个初步的封装思路,简化代码编写。1.先封装一个ResultSet存放查询结果:publicclassResultSet<T>{///<summary>///总记录数......
  • 封装的原则
    一个类常常就是一个小的模块,应该只让这个模块公开必须让外界知道的内容,而隐藏其他一切内容。进行程序设计时,应尽量避免一个模块直接操作和访问另一个模块的数据,模块设计追......