对Axios进行封装
封装的同时,你需要和 后端协商好一些约定,请求头,状态码,请求超时时间.......
设置接口请求前缀:根据开发、测试、生产环境的不同,前缀需要加以区分
请求头 : 来实现一些具体的业务,必须携带一些参数才可以请求(例如:会员业务)
状态码: 根据接口返回的不同status , 来执行不同的业务,这块需要和后端约定好
请求方法:根据get、post等方法进行一个再次封装,使用起来更为方便
请求拦截器: 根据请求的请求头设定,来决定哪些请求可以访问
响应拦截器: 这块就是根据 后端`返回来的状态码判定执行不同业务
#设置接口请求前缀
利用node环境变量来作判断,用来区分开发、测试、生产环境
if (process.env.NODE_ENV === 'development') {axios.defaults.baseURL = 'http://dev.xxx.com'
} else if (process.env.NODE_ENV === 'production') {axios.defaults.baseURL = 'http://prod.xxx.com'
}
在本地调试的时候,还需要在vue.config.js文件中配置devServer实现代理转发,从而实现跨域
devServer: {proxy: {'/proxyApi': {target: 'http://dev.xxx.com',changeOrigin: true,pathRewrite: {'/proxyApi': ''}}}}
#设置请求头与超时时间
大部分情况下,请求头都是固定的,只有少部分情况下,会需要一些特殊的请求头,这里将普适性的请求头作为基础配置。当需要特殊请求头时,将特殊请求头作为参数传入,覆盖基础配置
const service = axios.create({...timeout: 30000, // 请求 30s 超时headers: {get: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'// 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来},post: {'Content-Type': 'application/json;charset=utf-8'// 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来}},
})
#封装请求方法
先引入封装好的方法,在要调用的接口重新封装成一个方法暴露出去
// get 请求
export function httpGet({url,params = {}
}) {return new Promise((resolve, reject) => {axios.get(url, {params}).then((res) => {resolve(res.data)}).catch(err => {reject(err)})})
}// post
// post请求
export function httpPost({url,data = {},params = {}
}) {return new Promise((resolve, reject) => {axios({url,method: 'post',transformRequest: [function (data) {let ret = ''for (let it in data) {ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'}return ret}],// 发送的数据data,// url参数params}).then(res => {resolve(res.data)})})
}
把封装的方法放在一个api.js文件中
import { httpGet, httpPost } from './http'
export const getorglist = (params = {}) => httpGet({ url: 'apps/api/org/list', params })
页面中就能直接调用
// .vue
import { getorglist } from '@/assets/js/api'getorglist({ id: 200 }).then(res => {console.log(res)
})
这样可以把api统一管理起来,以后维护修改只需要在api.js文件操作即可
#请求拦截器
请求拦截器可以在每个请求里加上token,做了统一处理后维护起来也方便
// 请求拦截器
axios.interceptors.request.use(config => {// 每次发送请求之前判断是否存在token// 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况,此处token一般是用户完成登录后储存到localstorage里的token && (config.headers.Authorization = token)return config},error => {return Promise.error(error)})
#响应拦截器
响应拦截器可以在接收到响应后先做一层操作,如根据状态码判断登录状态、授权
// 响应拦截器
axios.interceptors.response.use(response => {// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据// 否则的话抛出错误if (response.status === 200) {if (response.data.code === 511) {// 未授权调取授权接口} else if (response.data.code === 510) {// 未登录跳转登录页} else {return Promise.resolve(response)}} else {return Promise.reject(response)}
}, error => {// 我们可以在这里对异常状态作统一处理if (error.response.status) {// 处理请求失败的情况// 对不同返回码对相应处理return Promise.reject(error.response)}
})相关文章:
对Axios进行封装
封装的同时,你需要和 后端协商好一些约定,请求头,状态码,请求超时时间....... 设置接口请求前缀:根据开发、测试、生产环境的不同,前缀需要加以区分 请求头 : 来实现一些具体的业务,必须携带一…...
Python TCP服务端多线程接收RFID网络读卡器上传数据
本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块,不可以随意更改每行前面的空白,否则程序会运行错误!!!如果缩进不…...
Ubuntu22.04安装MySql
在Ubuntu上安装mysql就比较简单了 1、常规操作,更新软件包列表 apt update 至少安装之前看一眼版本吧 apt list mysql-server 嗯,是8.0.35版本的 2、安装mysql apt install mysql-server 3、给root用户设置密码 # 第一次安装完无需密码,让你输入…...
设计模式-桥接模式(Bridge)
设计模式-桥接模式(Bridge) 一、桥接模式概述1.1 什么是桥接模式1.2 简单实现桥接模式 二、使用桥接模式注意事项三、实现桥接模式的方式3.1 使用继承和组合的方式实现桥接模式3.2 使用接口和内部类的方式实现桥接模式 一、桥接模式概述 1.1 什么是桥接…...
库存预占架构升级方案设计-交易库存中心
背景介绍  伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。近三年数据可以看出:  接入商家同比增长37.64%、货…...
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
目录 一、整合redis 1、介绍 1.1、redis(Remote Dictionary Server) 1.2、MySQL 1.3、区别 2、整合 2.1、配置 2.2、文件配置 2.3、key的生成规则方法 2.4、注意 二、redis注解式缓存 1、Cacheable注解 2、CachePut注解 3、CacheEvict注解…...
chatGPT对英语论文怎么润色呢?
chatGPT对英语论文怎么润色呢? 回答1: 润色英语论文是一项重要的任务,它有助于提高论文的质量、语法准确性和清晰度。以下是一些关于如何润色英语论文的建议: 语法和拼写检查: 使用拼写和语法检查工具,如…...
【机器学习4】降维
常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标, 即最大化投影方差, 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…...
注册商标有助于企业拓展市场渠道
拓展市场渠道 注册商标有助于企业拓展市场渠道。在商业合作和交易中,消费者往往更加倾向于选择有知名度和信誉的品牌。通过注册商标,企业可以树立自己的品牌形象,提高品牌知名度和美誉度,从而更好地开拓市场和拓展业务。同时&…...
推荐能用ios端磁力下载工具
关于ios端磁力下载工具,之前的文章给大家介绍过2个,分别是雷电下载和闪电下载。但是如今因为不可抗力和苹果商店对于磁力下载和云盘功能的限制,目前这两款工具已经不能够使用了。也就是说免费的下载工具已经没有了,毕竟实现ios端这…...
网页文档阅读的学习笔记
1. 阅读邮件 我是一名人工智能专业的博士生,请你帮我总结此页面的要点...
mysql图书管理系统(49-56)源代码
-- 九、 子查询 -- 无关子查询 -- 比较子查询:能确切知道子查询返回的是单值时,可以用>,<,,>,<,!或<>等比较运算符。 -- 49、 查询与“俞心怡”在同一个部门的读者的借…...
使用Docker部署开源分布式任务调度系统DolphinScheduler
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 使用Docker部署开源分布式任务调度系统DolphinScheduler 文章目录 使用Docker部署开源分布式任务…...
光猫桥接与直接拨号的对比
近期搬家,经历了一次拉宽带,换光猫,购置路由器的过程,有一些总结记录下来,备忘 装宽带之前已经知道桥接的好处就是可以路由器拨号,避免拉胯的光猫拖慢网速,但具体有什么坏处也不清楚࿰…...
使用cpolar配合Plex搭建私人媒体站并实现远程访问
文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…...
Web APIs——综合案例
1、学生就业统计表 2、渲染业务 根据持久化数据渲染页面 步骤: ①:读取localstorage本地数据 如果有数据则转换为对象放到变量里面一会使用它渲染页面如果没有则用默认空数组[]为了测试效果,可以先把initData存入本地存储看效果 ②&…...
2023.10月考试战报|华为认证HCIP考试100%通过
相关文章: 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月࿰…...
Oracle 三种分页方法(rownum、offset和fetch、row_number() over())
Oracle的三种分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用rownum、使用offset和fetch、使用row_number() over() 1、使用rownum rownum是oracle中一个伪劣,它用于表示返回的行的序号。使用rownum进行分页查询的方…...
13. 一文快速学懂常用工具——Kubernetes 命令
本章讲解知识点 Kubernetes 基本命令本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。…...
【Linux】shell执行文件清理
#!/usr/bin/env bash ################################################################################# # 程序名称: AutoClearFiles.sh # 创建日期: 2022-11-16 # 作者: evens # 使用说明: …...
Docker技术入门与实战【3.0】
第15章 构建Docker容器集群对Docker不熟悉的读者在生产环境中使用Docker的过程中,往往会碰到构建集群的需求。这里最核心的问题就是让不同主机中的Docker容器可以互相访问。 本章将介绍几种解决方案,包括利用端口映射实现容器之间的快速互联,…...
设备维护系统功能拆解:它能解决哪些设备维护难题?
在现代工业生产中,高效的设备维护是企业生存的根本,但传统模式常面临响应慢、记录乱的困境,而数字化的设备维护系统正是解决这些难题的利器。以简道云为例,作为国内领先的零代码平台,它允许企业像搭积木一样快速搭建专…...
【VS Code Copilot Next 工作流配置终极指南】:20年DevOps专家亲授5大高频报错的根因定位与秒级修复法
更多请点击: https://intelliparadigm.com 第一章:VS Code Copilot Next 工作流配置报错的系统性认知框架 当 VS Code Copilot Next 在工作流初始化阶段抛出 Failed to load extension GitHub.copilot-next 或 Error: Cannot resolve workspace configu…...
DeadLibrary:用确定性编译器解决AI代码生成的不稳定性
1. 项目概述:当AI助手遇上确定性代码生成如果你和我一样,在过去一年里深度使用过Cursor、Claude Code或者Windsurf这类AI编程助手来开发Angular应用,那你一定对那种“薛定谔的代码质量”深有体会。你满怀期待地输入“创建一个带有表单验证的用…...
python 基础学习文档
✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 1. 标识符命…...
为什么92%的Python量化团队在Tick级回测上栽跟头?——高频引擎时间对齐、订单簿重建与事件驱动闭环详解
更多请点击: https://intelliparadigm.com 第一章:Tick级回测失败的根源诊断与行业现状剖析 Tick级回测是量化策略验证的黄金标准,但实践中失败率高达68%(据2023年QuantResearch Survey统计)。其核心矛盾在于&#x…...
【Python】面向对象之三大特性
目录 1.封装 1.1私有化 1.2私有属性 1.3私有方法 1.4property 2.继承 2.1单继承 2.2多继承 2.3复用父类方法 2.4方法解析顺序 2.5MRO顺序说明 2.6方法重写 3.多态 1.封装 将变量和函数写入类中的操作即为封装,即类中封装了属性和方法。 通过封装&…...
LLM智能体开发资源导航:框架、基准与工具全景指南
1. 项目概述:一份面向LLM智能体开发者的“藏宝图”如果你正在研究或开发基于大语言模型(LLM)的智能体(Agent),并且感觉信息过载、工具繁多、评测标准不一,那么你很可能需要一份系统性的导航。zh…...
思源宋体7字重:开发者如何用免费字体解决中文排版三大难题
思源宋体7字重:开发者如何用免费字体解决中文排版三大难题 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文网页字体渲染发愁吗?每次看到中文字体在不…...
ChartVerse:提升视觉语言模型图表推理能力的数据合成框架
1. 项目概述 ChartVerse是一个创新的框架,旨在解决视觉语言模型(VLMs)在图表推理任务中面临的核心挑战——高质量训练数据的稀缺性。当前开源社区面临的主要困境是:现有数据集要么过于简单重复,要么缺乏深度推理所需的…...
