axios封装使用

🌼未封装

在项目中往往一个页面存在着要联调好几个接口,此时用下面的写法就会显得代码很冗余

// 向给定ID的用户发起请求  
axios.get('/user?ID=123456',{  params: {  //发送请求的数据ID: 123456  }  
})  
.then(function (response) {  // 处理成功情况  console.log(response);  
})  
.catch(function (error) {  // 处理错误情况  console.log(error);  
})  
.finally(function () {  // 总是会执行  
});// 支持async/await用法  
async function getUser() {  try {  const response = await axios.get('/user?ID=123456');  console.log(response);  } catch (error) {  console.error(error);  }  
}

🌼封装一下

errorCode.js

export default {'401': '认证失败,无法访问系统资源','403': '当前操作没有权限','404': '访问资源不存在','default': '系统未知错误,请反馈给管理员'
}

request.js

一般会在utils文件夹下创建request.js文件。封装的好处:统一处理请求和响应、简化API调用、提高代码的可维护性。

//引入axios
import axios from 'axios'
//引入错误信息合集
import errorCode from '@/utils/errorCode'axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'// 创建axios实例
const service = axios.create({//base接口,表示请求URL的公共部分baseURL:'http://127.0.0.1:8000/api/',// 超时timeout: 30000//还可以进行一些其他的配置
})// 请求拦截器
service.interceptors.request.use(config => {//配置请求头,以下是一个示例,设置语言为简体中文config.headers.lang = 'zh-CN'//对请求数据进行处理return config
}, error => {return Promise.reject(error)//请求拦截错误处理})// 响应拦截器
service.interceptors.response.use(async(res) => {//根据自己的需求进行代码的编写,以下是一些示例// 未设置状态码则默认成功状态const code = res.data.code || 200;// 获取错误信息const message = errorCode[code] || res.data.msg || errorCode['default']//通过响应码的不同进行不同的处理if (code === 401) {//响应码为401时的处理} else if (code === 404) {//响应码为404时的处理} else {//响应码为其他类型时的处理}return res.data}, async error => {//响应发生错误时的处理console.log('error')return false}
)

🌼调用接口

1.接口封装调用

import request from '@/utils/request';// 获取用户信息
export function getUserInfo(data) {return request({url: `/user/getUserInfo`, //请求的接口地址method: 'post', //请求的方式data //请求的数据})
}
import {getUserInfo} from '@/api/login';//写法1
const res = await getUserInfo({userId:123456})//写法2
function getInfo() {getUserInfo({userId:123456}).then((res) => {console.log(res)})
}

2.接口普通调用

import request from "@/utils/request";function getUserInfo(){request({url: `/user/getUserInfo`,method: "post",data: {userId:123456},}).then((res) => {console.log(res)}).catch(()=>{})
}

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

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

相关文章

人工智能:科技之光,生活之美

在科技飞速发展的今天,人工智能已经深入到我们的生活中,它如同一束璀璨的科技之光,照亮我们生活的每一个角落,使我们的生活更加美好。下面我将从人工智能的领域、应用以及对人工智能的看法三个方面来谈谈它对我们生活的影响。 一、…

最新红盟云卡个人自动发卡开源系统源码+全开源无加密+虚拟商品在线售卖平台

源码简介: 最新红盟云卡个人自动发卡开源系统源码全开源无加密虚拟商品在线售卖平台,支持多个接口的个人免签功能。 红盟云卡系统是一款基于PHP和MySQL开发的虚拟商品在线售卖平台。它具备美观且功能丰富的发卡网站特性,并可与社区进行无缝…

【量化】一个简版单档tick数据回测框架

这是一个简易的模拟实际交易流程的回测框架,所使用的行情数据是单档的tick成交数据。为了实现调用者可以实现自己的交易逻辑,本框架预留了几个函数予以调用者能够继承类后在子类中重写以实现买入卖出信号的生成(check_sell()和check_buy()&am…

Docker Swarm总结

1、swarm 理论基础 1.1 简介 Docker Swarm 是由 Docker 公司推出的 Docker 的原生集群管理系统,它将一个 Docker 主机池变成了一个单独的虚拟主机,用户只需通过简单的 API 即可实现与 Docker 集群的通 信。Docker Swarm 使用 GO 语言开发。从 Docker 1.…

inf和nan

在某些编程语法中inf表示无穷大,nan表示不是一个数(not a number) nan表示这个数不确定,而无穷大表示这个数任意大 1/0inf 这里把0当做一个无限接近0,但是非0的数 5-inf-inf 一个数减去无穷大会等于负无穷大 而inf-infnan 因为两个无穷大相减有很多可能,可能等于一个常数,也可能…

Linux find命令

根据时间查找 ## 查找几分钟之内创建的文件 find . -cmin 5

HTML所有功能大汇总

HTML所有的功能&#xff0c;都在下面的表格中呈现清楚了。千万不要死记硬背&#xff0c;但是在遇到困难的时候&#xff0c;可以按照这个表进行查找。 类别功能HTML标签文本样式粗体<b></b> 或 <strong></strong>斜体<i></i>或<em>&…

Ajax基础(应用场景|jquery实现Ajax|注意事项|Ajax发送json数据|Ajax携带文件数据)

文章目录 一、Ajax简介二、基于jquery实现Ajax三、使用Ajax注意的问题1.Ajax不要与form表单同时提交2.后端响应格式问题3、使用了Ajax作为请求后的注意事项 四、前后端数据传输的编码格式(content-Type)1.urlencoded2.formdata3.application/json 五、Ajax携带文件数据六、Ajax…

代码随想录第六十三天 | 单调栈:寻找 左边 / 右边 距离当前元素最近的 更小 元素的 下标(暴力,双指针,单调栈)(84);代码随想录主要题目结束

1、寻找 左边 / 右边 距离当前元素最近的 更小 元素的 下标 1.1 leetcode 84&#xff1a;柱状图中最大的矩形 第一遍代码思路错了&#xff0c;如&#xff1a;输入[2,1,2]&#xff0c;对于2&#xff0c;因为比栈顶元素1大&#xff0c;然后就会直接得出2&#xff08;1&#xff…

掌握Java语言特性的必备题目集锦!

问题&#xff1a;什么是ConcurrentLinkedDeque&#xff1f;它在Java中的使用场景是什么&#xff1f; 回答&#xff1a;ConcurrentLinkedDeque是Java中的一个线程安全的双向链表队列实现。它是Java并发集合框架中的一部分。它扩展了LinkedList类&#xff0c;并实现了Deque&…

etoken是什么意思,有什么作用?

EToken是一种数字货币&#xff0c;它是由以太坊区块链平台发行的智能合约&#xff0c;旨在为以太坊生态系统提供一种安全、可靠、去中心化的交易媒介。EToken具有多种作用&#xff0c;下面将详细介绍。 一、EToken的定义和发行 EToken是由以太坊智能合约创建的数字货币&#xf…

渲染器——快速Diff算法

讨论第三种用于比较新旧两组子节点的方式&#xff1a;快速Diff 算法。正如其名&#xff0c;该算法的实测速度非常快。该算法最早应用于 ivi 和 inferno 这两个框架&#xff0c;Vue.js 3 借鉴并扩展了它。 下图比较了 ivi、inferno 以及 Vue.js 2 的性能&#xff1a; 上图来自…

Redis持久化机制详解

使用缓存的时候&#xff0c;我们经常需要对内存中的数据进行持久化也就是将内存中的数据写入到硬盘中。大部分原因是为了之后重用数据&#xff08;比如重启机器、机器故障之后恢复数据&#xff09;&#xff0c;或者是为了做数据同步&#xff08;比如 Redis 集群的主从节点通过 …

Qt程序的自定义安装卸载方案

前言 NSIS 是一个 Open Source 的 Windows 系统下安装程序制作程序&#xff1b; NSIS-UI-Plugin 是一个开源的NSIS UI插件&#xff1b; 0x0 环境搭建 https://www.cnblogs.com/NSIS/p/16581122.html https://github.com/sway913/NSIS-UI-Plugin 0x1 类图 0x2 二次开发 自定…

持续集成失败:hudson.plugins.git.GitException: Failed to delete workspace

持续集成环境(git gitlab jenkins pipeline maven harbor docker k8s)之前都是ok的&#xff0c;突然就报错了&#xff1a; Cloning the remote Git repository Cloning repository git192.168.117.180:qzcsbj/gift.git ERROR: Failed to clean the workspace jenkins.ut…

【开源】基于Vue和SpringBoot的高校宿舍调配管理系统

项目编号&#xff1a; S 051 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S051&#xff0c;文末获取源码。} 项目编号&#xff1a;S051&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统…

【C++】C++11(2)

文章目录 一、新的类功能二、可变参数模板&#xff08;了解&#xff09;三、lambda表达式1. C98中的一个例子2.lambda表达式3.lambda表达式语法4.函数对象与lambda表达式 四、包装器1.function包装器2.bind 五、线程库1.thread类的简单介绍2.线程函数参数3.原子性操作库(atomic…

Qt|QLabel显示刷新图像数据

参考&#xff1a;QImage、QClipboard&#xff08;https://zhuanlan.zhihu.com/p/649611141&#xff09; 获取图像数据并转换为QImage unsigned char *data 图像数据; QImage show_image_ QImage(data, imgInfo.width, imgInfo.height, imgInfo.width, QImage::Format_Grays…

Android设置控件透明度

1.代码设置 View v findViewById(R.id.content); v.getBackground().setAlpha(100); 说明&#xff1a; 0~255透明度值&#xff0c;0表示完全透明&#xff0c;255表示完全不透明。 具体见下面的透明度数值表2.xml设置 如下图&#xff0c;1A即透明度10&#xff0c;加在了color…

IDEA控制台中文乱码

在IDEA中&#xff0c;如果控制台输出的中文字符显示为乱码&#xff0c;可能是因为控制台的编码设置不正确。你可以尝试以下方法来解决此问题&#xff1a; 方法1&#xff1a;更改IDEA控制台编码 打开IDEA的设置&#xff1a;File -> Settings&#xff08;Windows/Linux&…