vue对axios进行二次封装

前言

        在Vue中,对Axios进行二次封装可以提高代码的可重用性和可维护性。通过封装,我们可以将请求的配置、错误处理和拦截器等逻辑集中到一个地方,方便后续的修改和扩展。此外,封装Axios还可以简化代码,减少重复的请求配置,提高开发效率。因此,对Axios进行二次封装是Vue开发中一个非常实用的技巧。

1、教程步骤

1.npm或cnpm下载axios或

npm:

npm install axios -g

cnpm: 

cnpm install axios -g

2.http.js

    可以在src目录下建立http包,并在包内创建index.js,添加如下配置

import Axios from "axios";
import {MessageBox, Message} from 'element-ui'
import store from '../store/index'
import {getToken} from '@/utils/auth';// 创建axios实例
const service = Axios.create({baseURL: process.env.VUE_APP_BASE_API, //URL地址   环境变量文件 .env.developmenttimeout: 5000,//超时withCredentials: false,  //跨域时若要发生cookie,需要设置该选项
})// 请求拦截器
service.interceptors.request.use(config => {// if (store.getters.token) {// 设置令牌请求头config.headers['authorization'] = getToken()?getToken():null;// }return config},error => {return Promise.reject(error)}
);// 相应拦截
service.interceptors.response.use(// 通过自定义code 判定响应状态 也可以通过HTTP状态码判断response => {const res = response.data;// code 不为0 则判断为一个错误if (res.code !== 20000) {Message({message: res.message || "Error",type: 'error',duration: 5 * 1000});// 假设 10008 非法令牌  10012 其他客户端已经登陆if (res.code === 40001 || res.code === 10012) {// 重新登陆MessageBox.confirm('登陆状态异常,请重新登陆',"确认登陆信息",{confirmButtonText: '重新登陆',cancelButtonText: '取消',type: 'warning'}).then(() => {store.dispatch('user/resetToken').then(() => {location.reload()})})}return Promise.reject(new Error(res.message || 'Error'));} else {return res;}},error => {if (error.message.includes('timeout')) {  // 如果错误信息中包含'timeout',则认为是连接超时Message.error("网络超时");}else{Message.error("网络超时");}}
);export default service;

3.使用

        可以自己将不同模块请求进行封装,在其他地方直接调用即可

import service from "../index";export const login = (params) => {return service({url: "/user/login",method: "post",data:params,});
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20遇到缺少qt4相关库的问题

最近需要做套接字通讯的工作,最好是有一个网络调试软件能够接受或者发送套接字,测试代码能够正常通讯。windows下有很多,但是linux下比较少,使用广泛的是下面这一款。 1、安装 首先从网盘(链接: https://pan.baidu.c…

String在VS与Linux下的区别

目录 一、string的成员 1.VS 2.Linux 二、string的扩容机制 1. VS 2.Linux 一、string的成员 string是C标准库中的一个类模板,用于表示和操作字符串 string在 Windows 与 Linux 中的成员不是相同的 1.VS 4个成员:_str , _size , _capacity 和…

71.工作中redis的常用场景总结

文章目录 一、简介二、统计访问次数三、缓存四、分布式锁五、限流六、排行榜七、作为Session的存储器,存用户登录状态八、位统计九、生成全局ID 一、简介 Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中&…

【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】

请阅读【嵌入式开发学习必备专栏 之 Cortex-Mx 专栏】 文章目录 背景Cortex-M33 与 M4 差异Cortex-M33Cortex-M4关系和差异举例说明 背景 在移植 RT-Thread 到 瑞萨RA4M2(Cortex-M33)上时,遇到了hardfault 问题,最后使用了Cortex…

大数据开发之kafka(完整版)

第 1 章:Kafka概述 1.1 定义 Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只…

全志A133AndroidQ编译方式

编译uboot: cd longan/brandy/brandy-2.0 ./build.sh -p sun50iw10p1 //A133-android-10-plus\longan\brandy\brandy-2.0\u-boot-2018\u-boot.bin复制为u-boot-sun50iw10p1.bin 或者 //longan\brandy\brandy-2.0\u-boot-2018\configs\sun50iw10p1_defconfig cd …

Java String基础学习

目录 1、String的构造方法 2、String内存模型 3、字符串的比较 4、字符串的练习 1、用户登录系统 2、遍历字符串 3、统计字符次数 4、拼接字符串 5、字符串的反转 6、金额转换 7、手机号屏蔽 * 8、身份证信息查看 9、敏感词替换 5、StringBuilder 1、概念及练习…

leetcode热题100.三数之和

Problem: 15. 三数之和 文章目录 题目解题方法复杂度Code 题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元…

【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

步进电机控制 设计思路 电路设计: 选用AT89C51单片机作为电路核心部件,外加LM016L液晶显示屏作为显示,显示步进电机的Fast,Slow,Stop的三个状态将AT89C51单片机所选引脚与LM016L控制引脚相连,再将数据通…

ASEPRITE使用笔记

aseprite学习笔记 快捷键 新建图层后,按快捷键c可以调出画布属性框放大缩小画布快捷键,鼠标滚轮移动画布快捷键,空格ctr+d,取消选取基本概念 软件五个基本区域:菜单栏、工具属性栏、工具栏、图层栏、颜色栏颜色栏分为色板和调色区域注意事项 创造时,需要把输入法调整成应…

03.net6必须熟悉的类

C#必须熟悉的类 值和实例 true,false ,“”,‘a’,34f,34,34m,“ggd”,$“gg{age}” 基本类型和常用类型 byte int char decimal float double string DateTime TimeSpan bool Array dynamic var 自动推断类型 常用类型 Object Console Math …

java创建线程的三种方式

1、实现Runnable接口 这是最常用的方法,需要创建一个实现Runnable接口的类,并重写run()方法。然后,创建一个Thread对象并将这个实现Runnable接口的类的实例作为参数传递给Thread的构造函数。最后,调用Thread对象的start()方法来启…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

大数据开发之Kafka(broker、消费者、eagle监控、kraft模式)

第 4 章:Kafka Broker 4.1 Kafka Broker工作流程 4.1.1 Zookeeper存储的Kafka的信息 1、查看zookeeper中的kafka节点所存储的信息 启动Zookeeper客户端 [atguiguhadoop104 zookeeper-3.5.7]$ bin/zkCli.sh 通过ls命令列出kafka节点内容 [zk: localhost:2181(CO…

Windows11添加美式(纯英文)输入法

打开设置,选择“时间和语言” 选择“语言和区域” 检查语言中否有英语(美国),如果没有,请单击“添加语言” 单击英语(美国)右方的更多选项按钮,选择“语言选项” 找到下方“键盘…

对象数组变成一维数组,导出txt文件

假设对象数组格式为此 arr1: [{id: 1,title: 我是1目录,children: [{id: 11,title: 我是1-1目录,children: [{id: 111,title: 我是1-1-1目录,children: [],},],},],},{id: 2,title: 我是2目录,children: [{id: 21,title: 我是2-1目录,children: [],},],},], 页面如下 先在页面…

Kafka Connect: Debezium MySQL Connector 的 Partition 和 Replication 配置

使用 Kafka Connect 的 Debezium MySQL Connector 将 MySQL 数据库中的 CDC 数据写入 Kafka 时,在 Kafka 默认允许自动创建 Topic 的情况下,Kafka Connect 自动创建的 Topic 只有一个 Partition,在实际应用中,这显然是不行&#x…

gin中使用JWT

1.jwt使用 安装 go get github.com/golang-jwt/jwt/v4 默认Claim 如果我们直接使用JWT中默认的字段,没有其他定制化的需求则可以直接使用这个包中的和方法快速生成和解析token。 // 用于签名的字符串 var mySigningKey []byte("liwenzhou.com")// G…

【Spring 篇】MyBatis中的CRUD魔法:数据之美的四重奏

MyBatis,这个数据持久化的魔法师,以其优雅的SQL映射和简洁的配置文件,为我们呈现出一场CRUD(Create, Read, Update, Delete)的奇妙之旅。在这篇博客中,我们将深入探讨MyBatis中的增、删、改、查操作&#x…

溯流而上:从算盘到现代计算机——计算设备历史与关键人物的探索之旅

Tracing the Evolution: From Abacus to Modern Computers - An Exploratory Journey Through the History of Computing Devices and Key Figures 溯流而上:从算盘到现代计算机——计算设备历史与关键人物的探索之旅 Good day! Today, we embark on a fascinating …