Vue3(管理系统)-封装axios(utils)

一、在utils下编写request.js实例

1.添加基地址,设置超时时间

import axios from 'axios'
const baseURL = 'http://big-event-vue-api-t.itheima.net'
const instance = axios.create({// TODO 1. 基础地址,超时时间baseURL,timeout: 3000
})

2.添加请求拦截器

import { useUserStore } from '@/store'
// 添加请求拦截器axios.interceptors.request.use(function (config) {//     // config:// 在发送请求之前做些什么//携带tokenconst userStore = useUserStore()if (userStore) {config.headers.Authorization = userStore.token}return config},function (error) {// 对请求错误做些什么return Promise.reject(error)}
)

3.添加响应拦截器

import { ElMessage } from 'element-plus'
//这里是element-plus的导入消息框import router from '@/router'//弹窗提示
const open4 = () => {ElMessage({message: 'response.data.message ' || '请求失败,请稍后再试',type: 'error',plain: true})
} // 添加响应拦截器
axios.interceptors.response.use(function (response) {// 对响应数据做点什么if (response.data.code === 0) {return response}// 处理业务失败抛出错误常规open4()return Promise.reject(response.data)},function (error) {// 对响应错误做点什么// 默认错误ElMessage({message: error.response.data.message || '服务异常',type: 'error',plain: true})console.log(error)// 401错误,权限不足,token过期,跳转登录//?表示可选链if (error.response?.status === 401) {// 跳转登录router.push('/login')}return Promise.reject(error)}
)
export default instance
export { baseURL }

最后导出

二、可选链(扩展)

可选链(Optional Chaining)是编程语言中的一种特性,它允许你访问对象的嵌套属性,即使这些属性可能未被初始化或不存在。在 JavaScript 或 TypeScript 中,可选链的语法使用问号 ?. 来表示。

以下是可选链的一些常见用法:

  1. 访问对象的嵌套属性

     

    const obj = { foo: { bar: { baz: 'Hello World' } } }; // 使用可选链 const baz = obj?.foo?.bar?.baz; // "Hello World" // 不使用可选链,如果任一属性不存在,将导致错误 const baz = obj.foo.bar.baz; // 如果 obj.foo 或 obj.foo.bar 不存在,将抛出错误

  2. 函数调用: 如果一个函数可能不存在,使用可选链可以避免错误:

     

    const obj = { doSomething: () => console.log('Doing something') }; // 使用可选链调用函数 obj?.doSomething?.(); // "Doing something" // 如果 doSomething 不存在,不会抛出错误

  3. 与解构结合使用

     

    const obj = { foo: { bar: 42 } }; // 使用可选链进行解构 const { foo: { bar } = 0 } = obj; // 使用可选链进行解构,避免错误 const { foo: { bar } = 0 } = someUnknownObject;

  4. 链式调用

     

    const obj = { foo: { bar: () => 'Hello World' } }; // 使用可选链进行链式调用 const result = obj?.foo?.bar?.(); // 如果 foo 或 bar 不存在,result 将是 undefined 而不是抛出错误

  5. 条件表达式

     

    const obj = { foo: { bar: 'baz' } }; // 使用可选链进行条件表达式 const value = obj?.foo?.bar || 'default'; // value 将是 'baz',如果 obj.foo 或 obj.foo.bar 不存在,将是 'default'

可选链是一个非常有用的特性,它可以减少代码中的条件检查,使代码更加简洁。然而,它也可能导致一些微妙的错误,因为可选链返回 undefined 而不是抛出错误,所以使用时需要仔细考虑逻辑。

三、

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

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

相关文章

[C++][数据结构]红黑树的介绍和模拟实现

前言 之前我们简单学习了一下搜索树和平衡搜索树,今天我们来学习一下红黑树 简介 概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着…

面试官:关于HTTPS/HTTP2/HTTP3你懂多少?

公众号:程序员白特,欢迎一起交流学习~ HTTPS是什么 HTTP为什么不安全? https被认为是通信安全的http,除了http多了s和默认端口改成了443之外,其他都是沿用的http(除了明文和不安全)&#xff0…

基于FPGA的数字信号处理(9)--定点数据的两种溢出处理模式:饱和(Saturate)和绕回(Wrap)

1、前言 在逻辑设计中,为了保证运算结果的正确性,常常需要对结果的位宽进行扩展。比如2个3bits的无符号数相加,只有将结果设定为4bits,才能保证结果一定是正确的。不然,某些情况如77 14(1110),如果结果只…

SOLIDWORKS Electrical由3D布局生成2D机柜布局图

想要转换3D装配体到Electrical中需要在3D打开Electrical插件,并使用工程管理器打开需转换工程图的装配体 1、创建2D图纸 打开后在上方工具选项卡中选择-SOLIDWORKS Electrical选项卡-的创建2D图纸 2、选择图纸视角 使用创建2D图纸后就会进入工程图界面,在…

裁员为什么先裁技术人员?

最近这个问题比较火,我分享一个印象深刻的答案:楼盖完了,还需要搬砖的吗? 这个答案让我对互联网/程序员这个行业/职业有了新的认识。 房地产是在现实世界里盖房子,互联网是在虚拟世界里盖房子,只不过互联网…

第78天:WAF攻防-菜刀冰蝎哥斯拉流量通讯特征绕过检测反制感知

目录 案例一: 菜刀-流量&绕过&特征&检测 菜刀的流量特征 案例二:冰蝎-流量&绕过&特征&检测 冰蝎使用教程 冰蝎的流量特征 案例三: 哥斯拉-流量&绕过&特征&检测 哥斯拉使用教程 哥斯拉的流量特征…

调用第三方接口——支付宝付款

沙箱环境是支付宝开放平台为开发者提供的用于接口开发及主要功能联调的模拟环境。 参考 登录 - 支付宝 在沙箱环境下,已经分配好了用于模拟测试的应用信息、商家信息、买家信息等 小程序文档 - 支付宝文档中心 内网穿透(支付宝付款需要在公网进行检查…

PyTorch深度学习框架:从入门到实战

前言 学习 PyTorch 深度学习框架之前先学会深度学习和卷积神经网络 CNN ,这样学习起来会更香嗷。 Windows系统下PyTorch的环境配置 Anaconda是什么: Anaconda是一个开源的Python发行版本,专注于数据分析领域。它包含了conda、Python等190多…

为什么感觉没有效果

以前在辅导小儿作业的时候,我会在常用的搜索引擎里去寻找答案,一般情况下都能解决问题。 但是最近一段时间,我发现,搜索引擎搜出来的结果还没有利用短视频搜出来的答案更全面,短视频软件不仅可以显示AI整理出来的答案…

CTF(Web)中关于执行读取文件命令的相关知识与绕过技巧

在我遇到的题目中,想要读取文件必然是要执行cat /flag这个命令,但是题目当然不会这么轻松。让你直接cat出来,必然会有各种各样的滤过条件,你要做的就是尝试各种方法在cat /flag的基础上进行各种操作构建出最终的payload。 下面我…

【LeetCode 121】买卖股票的最佳时机

思路 思路: 所谓代码的复杂性来源于业务的复杂性,如果能够想清楚业务实现逻辑,就能够轻松写出代码; 假设当前是第i天,如何在第i天赚到最多的钱?需要在第i天之前以最低价买入股票; 所以需要求…

Python实现2048游戏

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待! 在这篇博客中,我们将使用 Python 和 Pygame 库来编写经典的 2048 游戏。2048 是一个益智类游戏,通过在 4x4 网格上滑动方块并合并它们来创建一个新的数字,直到获得数字 2048 或者无法继…

武汉星起航:跨境电商行业领航者,一站式孵化服务引领全球趋势

在全球化日益深入的今天,跨境电商作为连接各国市场的桥梁,其重要性日益凸显。在这一潮流中,武汉星起航电子商务有限公司以其前瞻性的战略眼光和丰富的运营经验,迅速崛起为跨境电商行业的领军者。公司不仅自营亚马逊跨境电商业务&a…

一对一WebRTC视频通话系列(四)——offer、answer、candidate信令实现

本篇博客主要讲解offer、answer、candidate信令实现,涵盖了媒体协商和网络协商相关实现。 本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。 一对一WebRTC视频通话系列往期博客 一…

自动驾驶主流芯片及平台架构(二)特斯拉自动驾驶芯片平台介绍

早期 对外采购mobileye EyeQ3 芯片摄像头半集成方案,主要是为了满足快速量产需求,且受制于研发资金不足限制; 中期 采用高算力NVIDIA 芯片平台其他摄像头供应商的特斯拉内部集成方案,mobileye开发节奏无法紧跟特斯拉需求&#xff…

如何取消xhr / fetch / axios请求

如何取消xhr请求 setTimeout(() > { xhr.abort() }, 1000)如何取消fetch请求 fetch()请求发送以后,如果中途想要取消,需要使用AbortController对象。 let controller new AbortController(); let signal controller.signal;fetch(url, {signal:…

【简单介绍下Debian常用命令】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于51单片机的手动数字时钟设计

基于51单片机的手动数字时钟 (仿真+程序) 功能介绍 具体功能: 1.八位数码管显示时分秒,格式为XX-XX-XX; 2.六个按键控制时、分、秒的加减; 3.复位按键重新计时; ​演示视频&am…

ESG视角下的多期DID构建(2009-2022年)4.5万+数据

随着ESG信息越来越受到重视,一些第三方评级机构开始推出ESG评级产品,目前在第三方数据库能够查到华证、富时罗素、商道融绿、社会价值投资联盟以及Wind自有的ESG评级数据等。其中,商道融绿是中国最早发布ESG评级数据的机构,也是国…

产业空间集聚DO指数计算

1.前言 创始人 :Duranton and Overman(2005) 目前应用较多的产业集聚度量指数主要基于两类,一是根据不同空间地理单元中产业经济规模的均衡性进行构造,如空间基尼系数与EG指数;二是基于微观企业地理位置信息形成的产业…