Vue中的请求拦截器和响应拦截器

article/2025/3/16 5:07:05

前置

大家好,我又来了,我们今天就讲一下什么是请求拦截器,和请求拦截器的作用,好了,多余的话我就不说了,马上开始今天的讲解

开始啦


在这里插入图片描述

请求拦截器

请求拦截器的作用是:

在请求发送前进行一些操作,例如在每个请求体里面加上token,统一做了处理的,如果要更改也是非常的容易。

关于拦截

这里只说原理,前端的请求,最终离不开Ajax,像Vue的Vue-ResourceAxios,都只是对Ajax进行了统一的封装,它暴露出来的拦截器,其实就是写了一个方法,把Ajax写在这个方法里面(我们先说请求拦截器)在执行的时候,先将请求时要添加给请求头的那些数据(Token、后端要的加密的密码)先执行一遍,都赋值给一个变量,然后再统一传给Ajax,接下来,就是执行Ajax,这就是所谓的请求拦截器,其实就是先执行要添加的数据,然后再执行Ajax,如果把这个添加数据的过程抽出来,就成了所谓的请求拦截器了

// 请求超时时间
axios.defaults.timeout = 120000// 添加请求拦截器
axios.interceptors.request.use(config => {// 在发送请求之前做些什么// 判断是否存在token,如果存在将每个页面header都添加tokenif (window.sessionStorage.getItem('DT')) {// 请求头配置全局tokenconfig.headers.DT = window.sessionStorage.getItem('DT')}return config},err => {// 对请求错误做些什么Vue.prototype.$message.error('请求超时')return Promise.reject(err)}
)

响应拦截器

响应拦截器的作用就是

在接收到响应后再进行一些操作,例如在服务器返回登录状态失效的时候,需要重登录,跳转到登录页面,
响应拦截器,就是是在请求结果的返回后的同时,先不直接导出,而是先对响应码等等的进行处理,处理好之后再导出给页面,如果将这个对象响应码的处理过程抽出来,就成了所谓的响应拦截器
代码如下

// 响应拦截器
axios.interceptors.response.use(response => {// res是响应的结果switch (response.data.code) {case 401:// 登录失效// 响应成功的拦截console.log('响应拦截器:')// console.log(response.data)Vue.prototype.$message.error(response.data.message)sessionStorage.removeItem('DT')router.push('/login')breakcase 404:if (response.data.message !== null) {Vue.prototype.$message.error(response.data.message)} else {Vue.prototype.$message.error('未知错误')}breakcase 500:// 错误if (response.data.message !== null) {Vue.prototype.$message.error(response.data.message)} else {Vue.prototype.$message.error('未知错误')}breakdefault:return response}return response},err => {if (err.response.data.message) {Vue.prototype.$message.error(err.response.data.message)return Promise.reject(err.response.data.message) // 返回接口返回的错误信息} else {// 返回状态码不为200时候的错误处理Vue.prototype.$message.error(err.toString())return Promise.resolve(err)}}
)

页面中请求接口时:

// 用户登录提交login() {// debuggerthis.$refs.loginFormRef.validate(async valid => {if (!valid) returnif (valid) {const userInfo = {username: this.loginForm.username,password: this.loginForm.password}// 登录之前去除tokenwindow.sessionStorage.removeItem('DT')const { data: res } = await this.$http.post('/system/login', userInfo)if (res.code !== 200) {this.initCaptcha()return}this.$message.success('登录成功')window.sessionStorage.setItem('DT', res.result.token)this.$router.push('/main')}})}

总结


  • 请求拦截器:其实就是先执行要添加的数据,然后再执行Ajax,如果把这个添加数据的过程抽出来,就成了所谓的请求拦截器了
  • 响应拦截器:就是是在请求结果的返回后的同时,先不直接导出,而是先对响应码等等的进行处理,处理好之后再导出给页面,如果将这个对象响应码的处理过程抽出来,就成了所谓的响应拦截器

http://chatgpt.dhexx.cn/article/lQyQPOGB.shtml

相关文章

vue-拦截器

第一步 起步 | Axios 中文文档 | Axios 中文网 安装 npm install axios ​ ​​​​​​ ​ ​ 第二步 ​ ​ 所有的请求都叫http协议 ​ ​ ​ ​ ​ 第三步 ​ 导入后即可使用里面的方法 ​ 任何一个东西都可以导出 ​ ​ 只有一个的时候只需要用defau…

vue请求拦截器 响应拦截器

import axios from "axios"; // 创建一个axios的appconst request axios.create({baseURL:http://127.0.0.1:8000/api/v1/,timeout:5000 })// 请求拦截器 request.interceptors.request.use(// ts写法 config:any(config)>{// 获取本地localstorage的TOKENlet to…

vue拦截器及请求封装

1.vue项目的src文件夹中创建request文件夹 (1)request文件夹中创建index.js (拦截器主要代码) /*** 请求封装*/import axios from axios;import configUrl from ./url.js; // import store from ../store;import cookies from "vue-cookies"…

Vue 拦截器原理和详细使用

拦截器原理和作用 首先拦截器在src/utils/request.js 文件中,拦截器分为请求拦截器和响应拦截器。 页面中的每一个请求都会经过请求拦截和响应拦截,所以一般在这个文件进行操作。 这一文件一般引入axios,vuex,Message&#xff0…

MATLAB学习笔记:定积分与广义积分

计算定积分和广义积分的命令int调用格式: 一元函数定积分: int(f(x),a,b) 二元函数定积分: int(f(x,y),x,a,b) >> syms x; >> fsin(x); >> sint(f,0,pi) s 2 >> syms x; >> fabs(x-1); >> sint(f,0,2)…

3.利用matlab计算不定积分和定积分(matlab程序 )

1.简述 不定积分 首先,通过符号变量创建一个符号函数,然后调用积分命令来计算函数的积分,示例如下: 注意:matlab中计算的不定积分结果中没有写上常数C,读者需要自己在使用的时候记得加上常数部分。 通常情…

matlab 自带定积分,Matlab怎么计算定积分,划重点了

在生活或研究中可能会遇到需要积分运算的情况,比如计算一个不规则图形的面积等等。matlab有很强的数据处理能力,只要给出任意可积的函数和积分上下线,用它可以进行积分运算。具体操作如下: 工具/材料 matlab软件 操作方法 01 以f(…

MATLAB基础教程(7)——求解定积分和不定积分

目录 定积分的基本概念 什么是定积分? 如何深入的理解定积分? 如何计算定积分? 在matlab中计算定积分。 不定积分 在matlab中计算不定积分 在matlab中计算定积分 本期回顾 定积分的基本概念 什么是定积分? 简而言之,我…

[转载]Matlab定积分近似计算

目标:加深理解积分理论中分割、近似、求和、取极限的思想方法,了解定积分近似计算的矩形法、梯形法与抛物线法,会用MATLAB语言编写求定积分近似值的程序,会用MALAB中的命令求定积分。 预备知识 在许多实际问题中,常常…

matlab近似计算求积分,matlab定积分的近似计算.ppt

matlab定积分的近似计算.ppt MATLAB数学建模与仿真 定积分的近似计算 2 定积分计算的基本公式是牛顿 莱布尼兹公式 但当被积函数的原函数不知道时 如何计算 这时就需要利用近似计算 特别是在许多实际应用中 被积函数甚至没有解析表达式 而是一条实验记录曲线 或一组离散的采样…

【Matlab】求解积分问题

求解积分问题 不定积分inf函数调用实例1实例2 定积分与无穷积分实例1实例2 多重积分 不定积分 inf函数调用 Finf(fun,x)fun是被积函数,是自变量, 当然如果只有一个自变量可以省略。 实例1 f ( x 2 1 ) 2 f {\left( {{x^2} 1} \right)^2} f(x21)2 …

matlab定积分怎么输入,Matlab计算定积分的操作内容讲解

许多伙伴还不晓得Matlab计算定积分的操作,而下面笔者就分享了Matlab计算定积分的操作内容,希望有需要的朋友都来共同学习哦。 打开Matlab,找到Matlab的命令窗口,点击进入,如图,当然也可以编辑脚本然后通过运…

关于用MATLAB求解定积分方程的问题

关于用MATLAB求解定积分方程的问题 Matlab论坛的总结帖: MATLAB中文论坛常见问题归纳-技术专栏-MATLAB中文论坛 帖子里面也有包含对于matlab中常用积分求解的介绍。 关于用matlab求解积分方程的问题,现在比较流行的是符号求解的方法。 对于积分方程的…

MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。

前期回顾 上期的教程虽然简短,但还是有点东西的,上一节中,我们学习了下面的知识点。 在matlab中定义矩阵:A [1 2 3; 2 3 4; 3 4 5],每行元素空格隔开,两行之间使用分号隔开。线性代数矩阵乘法运算、求解…

给div赋html,jquery怎么给div赋值

jquery给div赋值的方法:首先创建addtext函数;然后在函数内通过id(mydiv)获取div对象;最后使用text方法给div赋值即可,如【function addtext(){$(#mydiv).text(xx)}】。 环境: 本文适用于所有品牌的电脑。 (学习视频分享…

jQuery数据赋值解析

作者:Jiang, Jinlin 在我们使用jQuery中,会用到$(element).data()方法存取赋值到元素上的数据。通过该方法,我们每次通过selector获取该元素时,总能获取其赋值的数据。今天,我们就来看看jQuery是如何实现的。 首先,我们先从data方法看起: data方法接受两种参数形式,第…

给div赋值 html,jquery给div赋值的示例

jquery给div赋值的示例 发布时间:2020-11-30 11:44:03 来源:亿速云 阅读:120 作者:小新 小编给大家分享一下jquery给div赋值的示例,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!j…

jQuery取值和赋值的基本方法

一、.html() 获取集合中第一个匹配元素的HTML内容,也可以往匹配到的元素中写入内容。 如果写入的内容为标签,会被解析到页面中。 二、.text() 得到匹配元素集合中每个元素的合并文本,包括他们的后代 写入的标签不会被页面解析 三、.size() 返回的jQu…

Lora协议整理(第2汇报)

帧结构: 详细帧结构: 抓到的数据: LoraServer的搭建: 关于开源的lorawan server目前比较火的是brocaar的go语言版本的 https://github.com/brocaar/loraserver 另一个是gotthardp 的erlang语言的 https://github.com/gotth…

LoRaWAN与LoRa的区别!

LoRaWAN与LoRa的区别 在物联网技术快速发展的今天,NB-IoT、LoRa、SigFox等技术名词经常进入我们的视野中,对于刚刚接触物联网领域的人来说,在一大堆名词面前可能会混淆。面对类似于LoRa和LoRaWAN这样容易混淆的名词,其实只要系统…