当前位置: 首页 > news >正文

项目文档(request页面代码逻辑)

项目文档

目录

项目文档

1.  封装请求基地址

代码

2. 添加请求拦截器并设置请求头

作用

代码部分

3. 添加响应拦截器

作用

代码

4. token过期问题处理

5. 无感刷新

作用

代码

6. refresh_token过期处理

解决方式


1.  封装请求基地址

  • 在src目录下 放上一个专门写请求相关的文件夹
  • 然后在里面新建一个专门放用户请求的use.js
  • 用axios发送请求
  • 在use.js文件夹里导入request
  • 并且根据接口文档 写请求
  • 然后把这个请求封装成一个函数,这个函数里需要传入两个参数
  • 这两个参数 都放在data数据里 所以可以直接申明需要的数据是data

代码

2. 添加请求拦截器并设置请求头

作用

在向服务器发送请求时,很多请求都需要在请求头中携带token,每一次去请求都写请求头很麻烦,所以我们写一个请求拦截器,统一拦截并添加一个请求头

代码部分

// 请求拦截器
request.interceptors.request.use((config) => {// Do something before request is sent// 在我们发送请求前做的事情// 判断发送的请求需不需要请求头if (store.state.tokenObj.token) {// 统一在请求头中携带tokenconfig.headers.Authorization = 'Bearer ' + store.state.tokenObj.token}return config
}, (error) => {// Do something with request error// 请求失败return Promise.reject(error)
})


3. 添加响应拦截器

作用

响应拦截器里参数就是服务器返回给浏览器的内容  拦截器返回什么 浏览器拿到什么 如果拦截器什么都返回 那么浏览器什么都拿不到

代码

//响应拦截器
request.interceptors.response.use(function (response) {// 处理响应数据return response; // 返回响应数据
},


4. token过期问题处理

【模拟token过期】

在应用里的本地存储里 去更改token 达到让token失效

【拦截器拦截失败信息】

因为token过期, 所以第二次请求失败 ,那要代码继续运行下去, 就放上一个响应拦截器 把这个错误拦截, 并且不return出去 这样浏览器就不知道有这个错误。

 async function (error) {console.log('出错了');// 响应出错后所做的处理工作// return Promise.reject(error);try{//发送请求,获取refresh_tokenlet res = await axios({url: 'http://geek.itheima.net/v1_0/authorizations',method: 'put',//请求头headers: {Authorization: 'Bearer ' + store.state.tokenObj.refres_token}})//调用store里的changeToken方法,修改初始tokenstore.commit('changeToken', {// 使用第三次请求中打的到的新的token替换原本的tokentoken: res.data.data.token,// refres_token依然是原本的值refres_token: store.state.tokenObj.refres_token})// 这个时候把获取用户信息这个请求再发了一次// 在请求拦截器中,拦截器return什么,浏览器就拿到什么return request(error.config)// console.log('第三次请求获取到的内容', res);}catch{Toast.fail('登录状态失败,重新登陆')// 返回登录页router.push('./login')}});


5. 无感刷新

作用

用户不用刷新页面 系统内容自己重新发送请求 渲染页面

代码

        // 这个时候把获取用户信息这个请求再发了一次// 在请求拦截器中,拦截器return什么,浏览器就拿到什么return request(error.config)

加上这段代码, 在两个小时后 ,浏览器会自己把之前失败的请求 ,换成新的token再发一遍 用户不需要刷新页面 就可以在两个小时后 有新的token 并且页面不会出现任何破绽。


6. refresh_token过期处理

14天后refresh_token也会过期

解决方式

使用 try{}catch{}处理失败的情况

把整段请求代码放进try代码里进行检验

       try{//发送请求,获取refresh_tokenlet res = await axios({url: 'http://geek.itheima.net/v1_0/authorizations',method: 'put',//请求头headers: {Authorization: 'Bearer ' + store.state.tokenObj.refres_token}})//调用store里的changeToken方法,修改初始tokenstore.commit('changeToken', {// 使用第三次请求中打的到的新的token替换原本的tokentoken: res.data.data.token,// refres_token依然是原本的值refres_token: store.state.tokenObj.refres_token})// 这个时候把获取用户信息这个请求再发了一次// 在请求拦截器中,拦截器return什么,浏览器就拿到什么return request(error.config)// console.log('第三次请求获取到的内容', res);}catch{Toast.fail('登录状态失败,重新登陆')// 返回登录页router.push('./login')}

 编辑页面

相关文章:

项目文档(request页面代码逻辑)

项目文档 目录 项目文档 1. 封装请求基地址 代码 2. 添加请求拦截器并设置请求头 作用 代码部分 3. 添加响应拦截器 作用 代码 4. token过期问题处理 5. 无感刷新 作用 代码 6. refresh_token过期处理 解决方式 1. 封装请求基地址 在src目录下 放上一个专门写…...

后端传到前端的JSON数据大写变小写--2023

问题复现:1. 首先我先说一下,我用了lombok,事实证明和这个也有关系 前端这里写的也是按照驼峰命名来写的 控制台打印出来的数据 后台打印出来的数据 解决方法: 1. 重写get/set方法 因为我在实体类上标注了Data注解 重写get/se…...

学习【菜鸟教程】【C++ 类 对象】【C++ 类的静态成员】

链接 1. 教程 可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时…...

计算机四大件笔记

啊~数据库、操作系统、计算机网络、Linux start 操作系统 并发和并行 并发是同一时间段内发生了多个事情,多任务之间互相抢占资源。 并行是在同一时间点内发生了多个事情,多任务之间不互相抢占资源,只有多CPU的情况下才能并行。 例如&a…...

【vue上传文件——hash】

vue上传文件 要求:只能上传视频,先计算文件的hash值,hash值一样则不需要上传,不一样在执行上传 分析:因为el-upload没有找到合适的属性,本次用的是原生的input的type属性为file上传 代码: html: 通过点击选取文件按钮调用input上传 js 第一步:点击上传文件先效验是否…...

【OpenCV DNN】Flask 视频监控目标检测教程 01

欢迎关注『OpenCV DNN Youcans』系列,持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 01 【OpenCV DNN】Flask 视频监控目标检测教程 01 1. 面向Python程序的Web框架2. Flask 框架的安装与使用2.1 Flask 安装2.2 Flask 框架例程2.3 绑定IP和端口2.4 Flask路…...

(转载)从0开始学matlab(第10天)—自顶向下的编程思想

在前面的内容中,我们开发了几个完全运转的 MATLAB 程序。但是这些程序都十分简单,包括一系列的 MATLAB 语句,这些语句按照固定的顺序一个接一个的执行。像这样的程序我们称之顺序结构程序。它首先读取输入,然后运算得到所需结果&a…...

mapreduce技术

要实现操作hbase数据表首先要了解它的原理: 1,Hbase原理篇 HBASE就是基于Hadoop的一个开源项目,也是对Google的BigTable的一种实现。 BigTable最浅显来看就是一张很大的表,表的属性可以根据需求去动态增加,但是又没有表与表之间…...

AI智慧安监视频平台EasyCVR视频出现不能播放的情况排查与解决

EasyCVR基于云边端协同,可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码、平台级联等功能。 有用户反…...

嵌入式学习之Linux驱动(第九期_设备模型_教程更新了)_基于RK3568

驱动视频全新升级,并持续更新~更全,思路更科学,入门更简单。 迅为基于iTOP-RK3568开发板进行讲解,本次更新内容为第九期,主要讲解设备模型,共计29讲。视频选集 0.课程规划 06:35 1.抛砖引玉-设备模型…...

LeetCode662.设计循环队列||4种方法实现

目录 题目 思路1(链表) 代码 思路2(数组) 代码 题目 题目要求的队列需要实现的功能有 ①Creat---设置队列长度 ②Front---获取队列头 ③Rear---获取队列尾 ④en----插入元素 ⑤de---删除元素 ⑥empty---判空 ⑦full---判满 思路1(链表) 🔍普通队列长度没有限制&…...

人工智能专栏第十二讲——依存解析

依存句法分析是一种自然语言处理技术,其目的是识别句子中单词之间的依赖关系。在自然语言处理中,依存句法分析是一项非常重要的任务,因为它可以帮助我们理解句子的语义结构,从而更好地进行文本分析、信息抽取、语音识别等任务。 …...

nest日志包pino、winston配置-懒人的折腾

nest日志 三种node服务端日志选型 winstonpinolog4js 2023年5月23日 看star数:winston > pino > log4js 使用体验: pino 格式简洁,速度快,支持输入日志到任意数据库,日志暂无自动清理(可能是我…...

一文看懂增值税发票识别OCR:从技术原理到 API Java 示例代码接入

引言 增值税发票识别OCR API是一项重要的技术创新,它在如今信息化的商业环境中发挥着重要作用。通过利用该API,企业和机构能够实现增值税发票的自动化识别和信息提取,从而在财务管理、票据核对、报销流程等方面带来许多好处。 本文将详细介…...

消息队列对比

目录 什么是消息队列 常用的消息队列工具对比 1 、ActiveMQ 2 、RabbitMQ 3、Kafka 4、 RocketMQ 什么是消息队列 消息队列是分布式应用间交换信息的重要组件,消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走。通过消息队列&#xff0…...

Ceph对象存储的基本概念,使用以及优点

Ceph对象存储的基本概念,使用以及优点 Ceph是一种基于分布式架构的对象存储系统,它可以提供高可靠性、高扩展性和高性能的存储服务。这种存储系统可以用于处理大量的数据,例如大型数据库、云存储、视频流、图像数据等。Ceph对象存储系统的基…...

工业互联网UWB定位系统源码,支持自定义开发

工厂人员定位系统,采用UWB定位技术,通过在厂区内部署一定数量的定位基站,以及为人员、车辆、物资佩戴标签卡的形式,实时获取人员精确位置,精度高达10cm。 文末获取联系 工厂人员定位系统可实现物资/车辆实时定位&#…...

VIC模型教程

详情点击链接:RVIC模型融合实践技术应用及未来气候变化模型预测 一:VIC模型的原理与特点 1.VIC模型各模块的主要原理 2.VIC模型的特点及优势 3.VIC模型的适用范围及其限制 4.VIC模型主要输入和输出文件解析案例一 :基于QGIS的VIC模型建模…...

软件著作权容易搞吗?

没有代码、材料,只有一个软件名字就能拿证,你说容易不… 当然这是对我们软著一级代理来说,每年申请下证几千个软著。下面说说下证要点给大家避坑。人群覆盖高新企业、大学生、大学老师、互联网公司。 软件著作权想要轻松下证,必…...

Mac打出特殊字符

optionq:œ ---------optionw:∑ optione: ---------optionr: optiont:† ---------optiony: optionu: ---------optionI:无 optiono: ---------optionP:π o…...

从谷歌官网下载谷歌浏览器并测试能否正常访问deepseek免注册版网址

引言 下载软件的时候,需要识别是否来自官网。如果下载来自非官方网站提供的软件,可能出现的危害包括但不限于,自动安装多个你并不想要安装的软件,甚至是都没听过的软件,这些软件很可能自动设置了开机自启动功能&#x…...

SEO从业者常见的赚钱误区有哪些

SEO从业者常见的赚钱误区有哪些 在互联网行业,搜索引擎优化(SEO)是一个极具潜力的领域,尤其是对于那些希望通过网站获取流量和收入的从业者来说。尽管SEO有许多成功的案例,但也有许多从业者在赚钱的道路上遇到了一些误…...

python confluence

# Python Confluence:让团队知识流动起来 在团队协作中,知识管理常常是个令人头疼的问题。文档散落在各处,版本混乱,新成员找不到关键信息,老员工的经验难以沉淀。如果你也遇到过这些问题,那么Python Conf…...

基于Matlab/Simulink的直流调速系统PI控制器设计与抗扰性能仿真分析

1. 直流调速系统与PI控制基础 直流电机调速系统在工业自动化领域应用广泛,从机床主轴控制到电动汽车驱动都离不开它。我第一次接触这个课题是在研究生实验室,当时用老旧的直流电机做实验,手忙脚乱调参数的样子至今记忆犹新。传统调速系统最让…...

实用算法:布隆过滤器原理与手写实现,彻底解决缓存穿透

实用算法:布隆过滤器原理与手写实现,彻底解决缓存穿透 前言:在高并发系统中,缓存是提升性能的核心手段,但缓存穿透问题常常成为系统的“隐形杀手”——恶意请求不存在的Key,绕过缓存直接冲击数据库&#xf…...

自动化测试框架选型:为什么我们最终选择了Playwright?

在软件质量保障体系中,UI自动化测试框架的选型是一个至关重要的技术决策。面对市场上众多的选择,如老牌的Selenium、现代的Cypress以及后起之秀Playwright,如何做出既符合当下技术趋势,又能满足团队长期发展需求的选择&#xff0c…...

MSI-X 虚拟化

MSI-X 虚拟化是 PCIe 设备在虚拟化环境中,将硬件 MSI-X 中断能力通过软件模拟、IOMMU 重映射或 SR-IOV 硬件隔离等技术,安全、高效地分配给多个虚拟机(Guest)的核心机制。它解决了传统 INTx 中断共享、MSI 向量不足的问题&#xf…...

手把手教你调用MiniMax API:快速集成聊天、语音合成到你的应用(Python示例)

手把手教你调用MiniMax API:快速集成聊天、语音合成到你的应用(Python示例) 在AI技术快速落地的今天,将大模型能力集成到自己的应用中已成为开发者的刚需。MiniMax作为国内领先的大模型服务提供商,其API平台提供了对话…...

解锁3大网页设计黑科技:从像素到原型的无缝转换

解锁3大网页设计黑科技:从像素到原型的无缝转换 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 作为设计师,你是否曾为获取网页设计灵感而频繁截图&#x…...

aliyun---MySql云数据库

在阿里云的云数据库(RDS MySQL)中,内网 IP 和 外网 IP 的区别主要体现在性能、安全性和通信链路上。你可以把 RDS 想象成写字楼里的“保险柜”,内网是“楼内通道”,外网是“临街大门”。 1. 核心对比 特性内网 IP (VP…...