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

HTTP请求拦截器链

文章目录

  • HTTP请求拦截器链
    • 需求定义
    • 写一个Controller方法接口
    • 写三个http请求拦截器
    • 把拦截器加入到配置中,并且配置拦截规则
    • 在postman里面发送请求,看下测试结果是否正确

HTTP请求拦截器链

需求定义

我们写一个包含三个HTTP请求拦截器的拦截器链,写一个controller控制器方法,最后在postman里面调用controller控制器里面的接口方法,看看这个请求的经过路径。
首先说结论,如下图:
在这里插入图片描述

写一个Controller方法接口

如下图:
在这里插入图片描述

写三个http请求拦截器

我们定义三个http请求拦截器如下图:
在这里插入图片描述
然后每个http请求拦截器都实现preHandle、postHandle、afterCompletion这三个方法,如下图:
在这里插入图片描述

preHandle、postHandle、afterCompletion方法的执行时机?
当一个http请求发过来的时候,如果没有http请求拦截器这个请求是会直接发送到Controller控制器里面的,但是如果有http请求拦截器的话,外部发来的http请求会先进入到拦截器中拦截。可能我们程序中有多个http请求拦截器,比如有三个http请求拦截器,那么这三个http请求拦截器会组成一个拦截器链,外部发来的http请求先进入第一个拦截器的preHandle方法,如果这个拦截器放行了,也就是preHandle方法返回了true,那么该请求就会被第一个拦截器放行,然后该请求会进入到拦截器链中的第一个拦截器中,同样是进入到preHandle方法当中,如果preHandle方法返回true,则同样放行;接着http请求进入到第三个拦截器的preHandle方法里面;最后该请求才会进入到controller控制器中执行。注意如果preHandle方法返回false,则该请求就不能传递到controller控制器中了。

执行完controller方法之后,该http请求就算是执行完毕了,接着会从拦截器链中倒着走出去,先走拦截器3的postHandle方法,再走拦截器2的postHandle方法,最后再走拦截器1的postHandle方法;
走完了postHandle方法之后,再走拦截器3的afterCompletion方法,再走拦截器2的afterCompletion方法,最后走拦截器1的afterCompletion方法;

这样就执行完了一个http请求的全部过程,流程图如下图:
在这里插入图片描述

把拦截器加入到配置中,并且配置拦截规则

我们需要写一个拦截器配置类,把需要用到的拦截器放到拦截器链中,并且配置每个拦截器拦截的http请求的规则,就是拦截什么样的http请求,比如只拦截/user的请求,或者只拦截/student的请求,具体是什么样的请求规则,我们可以自定义。拦截器配置类如下图:
在这里插入图片描述
可以看到我们这里把拦截器1、拦截器2、拦截器3全部都放到了拦截器链中,然后每个拦截器都是拦截所有的http请求。

在postman里面发送请求,看下测试结果是否正确

首先看下我们控制器里面接收请求的方法,如下图:
在这里插入图片描述

然后在postman里面发送一个/test请求,如下图:
在这里插入图片描述
可以看到我们的controller控制器里面的方法确实成功执行了,接着去看下在执行controller控制器方法之前,三个拦截器里面的preHandle方法是否执行了,以及在执行controller控制器方法之后,三个拦截器里面的postHandle方法和afterCompletion方法是否执行了,控制台输出信息如下图:
在这里插入图片描述
可以发现这里在执行Controller控制器之前确实执行了拦截器中的preHandle方法,以及在执行Controller控制器之后也确实执行了拦截器中的postHandle和afterCompletion方法,并且顺序也是正确的。

相关文章:

HTTP请求拦截器链

文章目录 HTTP请求拦截器链需求定义写一个Controller方法接口写三个http请求拦截器把拦截器加入到配置中,并且配置拦截规则在postman里面发送请求,看下测试结果是否正确 HTTP请求拦截器链 需求定义 我们写一个包含三个HTTP请求拦截器的拦截器链&#x…...

再创佳绩丨达梦数据库一体机荣获2024数字中国创新大赛·信创赛道总决赛一等奖

5月24日,第七届数字中国建设峰会在福州盛大开幕,峰会内容安排包含开幕式、主论坛、分论坛、数字中国创新大赛、现场体验区及成果发布和专业工作会议等。武汉达梦数据库股份有限公司(以下简称达梦数据)受邀参加并在展、会、赛等多个环节深度参与。达梦全栈…...

数据分析之统计学基础

数据分析是现代企业和科研中不可或缺的一部分,而统计学是数据分析的基石。在本篇博客中,我们将介绍统计学的基础知识,涵盖数据类型、描述性统计(集中趋势、离散程度和偏差程度),并通过代码实例加以说明。 …...

Web3 游戏周报(5.19 - 5.25)

【5.19 - 5.25】Web3 游戏行业动态: Arbitrum 已开启 “2 亿枚 ARB 游戏催化剂计划”的提案投票。 STEPN 在官方 X 宣布将推出全新社交健身应用 STEPN GO。 Oasys 正式推出《足球小将》漫改 Web3 游戏《Captain Tsubasa-RIVALS-》。 Gala Games :已销…...

通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求

目录 一、通过el-tree自定义渲染网页版工作目录 1.1、需求介绍 1.2、使用el-tree生成文档目录 1.2.1、官方基础用法 ①效果 ②代码: 1.2.2、自定义文档目录(实现鼠标悬浮显示完整名称、用icon区分文件和文件夹) ①效果(直接效…...

C语言 | Leetcode C语言题解之第101题对称二叉树

题目: 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool isSymmetric(struct TreeNode* root) {if (root NULL) return true;//如果根为空直接…...

TTime:截图翻译/OCR

日常网页翻译Translate Web Pages完全足够,TTime最重要的功能,还是截图翻译,还有个厉害的功能,就是静默OCR,相比之前的分享的识字精灵效率更高。 软件使用 打开软件,点击翻译源设置,建议勾选一…...

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 哈希函数与哈希 之 闭散列的线性探测解决哈希冲突 的相关内容。 如…...

四川农业大学Java实训项目圆满收官,汇智知了堂引领学子实践创新

近日,四川农业大学与汇智知了堂共同举办的Java实训项目正式迎来了项目汇报阶段。本次实训是汇智知了堂在高等教育领域深化校企合作、推动产教融合的一次重要实践,旨在为广大学子提供一个将理论知识与实际操作相结合的平台。 在实训过程中,汇…...

JavaScript的当前时间设置及Date的运算

作者:私语茶馆 1.场景描述 如下图,在HTML刚加载时,需要将开始时间设置为默认当前时间,结束时间设置为当前时间后7天的时间。手工填写时间时,时间段不超过30天。 这里涉及到两个技术点: 1)Input Date的当前时间设置 2)date的运算 由于是动态修改HTML,所以采用…...

网络安全管理制度

一、总则 目的:本制度旨在保障组织内部网络系统的安全、稳定运行,保护组织的信息资产不受损害,确保业务的连续性和数据的完整性。适用范围:本制度适用于组织内部所有使用网络系统的部门、员工及第三方合作伙伴。 二、网络安全管理…...

零基础,想做一名网络安全工程师,该怎么学习?

​ 相比IT类的其它岗位,网络工程师的学习方向是比较明亮的。想要成为网络工程师,华为认证就是最好的学习方法。而网络工程师的从零开始学习就是从华为认证的初级开始学起,也就是HCIA,也就是从最基本的什么是IP地址、什么是交换机这…...

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型 前言 今天来写一个简单的ernie-c#的例子,主要参考了百度智能云的例子,然后自己改了改,学习了ERNIE模型的鉴权方式,数据流的格式和简单的数据解析,实…...

【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN

业务需求,开始接触一下抖音小游戏相关的内容,开发过程中记录一下流程。 使用资源分包可以优化游戏启动速度,是抖音小游戏推荐的一种方式,抖音云也提供存放资源的CDN服务 抖音云官方文档:https://developer.open-douyi…...

SQLite查询优化

文章目录 1. 引言2. WHERE子句分析2.1. 索引项使用示例 3. BETWEEN优化4. OR优化4.1. 将OR连接的约束转换为IN运算符4.2. 分别评估OR约束并取结果的并集 5. LIKE优化6. 跳跃扫描优化7. 连接7.1. 手动控制连接顺序7.1.1. 使用 SQLITE_STAT 表手动控制查询计划7.1.2. 使用 CROSS …...

UE4编辑器End键Actor贴近地面

void UXXXEditorFunctionLibrary::SnapToFloor(AActor* Actor) { if (Actor) { Actor->Modify(); GEditor->SnapObjectTo(FActorOrComponent(Actor), false, false, false, false); Actor->InvalidateLightingCache(); Actor->UpdateComponentTransforms(); } }...

2024儿科常用心理评估量表汇总,附详细操作步骤与评定标准

在社会的快速发展以及家庭教育模式的转变下,儿童心理健康问题正逐步成为公众瞩目的焦点。焦虑症、抑郁症、适应障碍等儿科常见的症状,不仅对孩子的身心健康构成威胁,更可能在他们的学习旅程和社交互动中制造重重障碍。 儿科医师常用评估量表…...

Python 脚本化 Git 操作:简单、高效、无压力

前言 如何判定此次测试是否达标,代码覆盖率是衡量的标准之一。前段时间,利用fastapi框架重写了覆盖率统计服务,核心其实就是先获取全量代码覆盖率,然后通过diff操作统计增量代码覆盖率,当然要使用diff操作&#xff0c…...

手搓顺序表(C语言)

目录 SeqList.h SeqList.c 头插尾插复用任意位置插入 头删尾删复用任意位置删除 SLtest.c 测试示例 顺序表优劣分析 SeqList.h //SeqList.h#pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h> #define IN_CY 3typedef int S…...

一文搞懂oracle事务提交以及脏数据落盘的原则

本文基于oracle 19c 做事务提交以及oracle脏数据落盘的相关解读 第一章 相关进程及组件介绍&#xff1a; 1.LGWR&#xff1a; 重做日志条目在系统全局区域 &#xff08;SGA&#xff09; 的重做日志缓冲区中生成。LGWR 按顺序将重做日志条目写入重做日志文件。如果数据库具有…...

用C#手搓ABB IRB 2600机器人正逆运动学(附完整代码与避坑指南)

从零实现ABB IRB 2600机器人运动学&#xff1a;C#实战与工业级代码优化 在工业机器人编程领域&#xff0c;能够将教科书上的数学公式转化为可靠的生产线代码是一项核心技能。ABB IRB 2600作为经典的六轴工业机器人&#xff0c;其运动学实现过程中存在诸多教科书不会提及的工程细…...

可变形卷积+深度可分离卷积:手把手复现DAS注意力,在自定义数据集上提升目标检测AP

可变形卷积与深度可分离卷积融合实战&#xff1a;从零实现DAS注意力模块提升目标检测性能 在目标检测领域&#xff0c;如何让模型更精准地聚焦关键区域一直是核心挑战。传统卷积神经网络&#xff08;CNN&#xff09;受限于固定感受野&#xff0c;难以动态适应不同目标的几何变…...

FPGA入门实战:基于HME-P开发板的LED流水灯完整开发流程详解

1. 项目概述与核心价值最近在整理工作室的物料&#xff0c;翻出来几块之前朋友送的HME-P&#xff08;飞马&#xff09;系列FPGA开发板。这板子做工扎实&#xff0c;接口也丰富&#xff0c;但一直没时间好好把玩。正好有刚入门的同事问起FPGA怎么上手&#xff0c;说看理论看得云…...

掌握Linux系统Realtek RTL8125 2.5GbE网卡驱动安装与性能优化的5个实战技巧

掌握Linux系统Realtek RTL8125 2.5GbE网卡驱动安装与性能优化的5个实战技巧 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125-dkms 在L…...

【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行

对应代码&#xff1a;配套代码/test/core/hybrid_test_executor.py说明&#xff1a;本节讲解当一个测试用例需要同时使用接口测试和 UI 测试时&#xff0c;如何协调执行。这节讲什么有些测试用例&#xff0c;光靠接口测试或 UI 测试都不够。比如"验证用户注册后能登录&quo…...

使用Taotoken后我的API调用延迟与用量清晰可见

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken后我的API调用延迟与用量清晰可见 作为一名频繁调用各类大语言模型的独立开发者&#xff0c;管理多个API密钥、追踪不…...

华为OD机试真题 新系统-等距二进制判断(C/C++/Py/Java/Js/Go)

等距二进制判断 华为OD机试新系统真题 华为OD上机考试新系统真题 5月20号 100分题型 华为OD机试新系统真题目录点击查看: 华为OD机试真题题库目录&#xff5c;机考题库 算法考点详解 题目内容 对于一个二进制数&#xff0c;我们定义相邻两个 111 之间 000 的数量为他们两个…...

3分钟掌握Windows安卓应用安装:APK Installer终极指南

3分钟掌握Windows安卓应用安装&#xff1a;APK Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行安卓应用&#…...

为什么你的“丝绸”总像锡纸?Midjourney材质语义断层诊断:87%用户忽略的材质动词前置语法(drape, crumple, refract)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;材质语义断层的本质&#xff1a;从物理光学到提示词编码的跨模态失配 材质在真实世界中由微观结构、折射率、表面粗糙度、各向异性散射等物理属性共同定义&#xff0c;其视觉表现依赖于光与物质的连续相…...

SPSS虚拟变量避坑指南:创建后如何正确用于回归分析?别让编码错误毁了你的模型

SPSS虚拟变量实战避坑&#xff1a;从编码到回归分析的完整解决方案 在数据分析领域&#xff0c;虚拟变量&#xff08;Dummy Variable&#xff09;是将分类变量转换为可用于回归分析形式的桥梁。许多研究者虽然掌握了SPSS生成虚拟变量的基础操作&#xff0c;却在后续分析中频频…...