当前位置:网站首页>Go中间件
Go中间件
2022-07-31 04:55:00 【話吥哆先森丶】
一、简述
gin中间件类似java的拦截器,通过中间件可以在处理具体的route请求时,提前做一些业务。比如用户有效性的校验,特定日志格式的打印,错误日志的打印等等。
一个个中间件组成一条中间件链,对HTTPRequest请求进行拦截处理,实现了代码的解耦和分离,并且中间件之间相互不用感知到,每个中间件只需要处理自己需要处理的事情即可。
gin的中间件大致可以分为两类,全局中间件和路由中间件,下面记录gin的中间件学习过程中的一些问题。
- 全局中间件
- Group 中间件
- 单个路由中间件
二、全局中间件
1、默认中间件
使用router := gin.Default()
定义route时,默认带了Logger()
和Recovery()
。我们可以使用BasicAuth()
中间件做一些简单的用户权限的认证
|
gin的中间件是通过Use方法设置的,它接受一个可变的参数,所以我们可以设置多个中间件
|
一个gin的中间件,其实就是一个HandleFunc
|
2、自定义中间件
|
示例:
获取请求中的sessionid,写入到context中,context.Next()
跳到下一个中间件中,下一个中间件会对这个session进行有效性校验(sessionid是否存在,是否过期等)
|
3、路由中间件
只是针对具体的路由规则
示例:
下面定义了一个分组路由/user
,分组路由下的/login
需要验证用户名和密码,这个路由使用的是路由中间件Validate()
,通过查库验证用户名和密码。而其余的路由/manager/show
和/manager/modify
使用了路由中间件handles.Cookie()
,这个中间件验证用户在登陆成功后的sessionid
的有效性
|
三、中间件件的流转
gin提供了两个函数Abort()
和Next()
,配合着return
关键字用来跳转或者终止存在着业务逻辑关系的中间件。
.Next()
跳过当前的中间件,执行下一个中间件,待下一个中间件执行完后再回到当前next位置,执行后面的逻辑
.Abort()
终止该中间件的流程,如果不return
的话会继续执行后面的逻辑,但不再执行其他的中间件
结论
1. next()函数会跳过当前中间件中next()后的逻辑,当下一个中间件执行完成后再执行剩余的逻辑
2. abort()函数执行终止当前中间件以后的中间件执行,但是会执行当前中间件的后续逻辑
Gin框架系列03:换个姿势理解中间件 - Go语言中文网 - Golang中文社区
golang gin 中间件,返回结果 - 漫步的影子 - 博客园
边栏推荐
猜你喜欢
The monitoring of Doris study notes
The Vue project connects to the MySQL database through node and implements addition, deletion, modification and query operations
Explanation of
mysql uses on duplicate key update to update data in batches
prompt.ml/15中<svg>标签使用解释
Centos7 install mysql5.7
PWN ROP
矩池云快速安装torch-sparse、torch-geometric等包
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
【线性神经网络】softmax回归
随机推荐
The input input box displays the precision of two decimal places
聚变云原生,赋能新里程 | 2022开放原子全球开源峰会云原生分论坛圆满召开
STM32——DMA
.NET-9.乱七八糟的理论笔记(概念,思想)
简易网络文件拷贝的C实现
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
[C language] Detailed explanation of operators
sql语句-如何以一个表中的数据为条件据查询另一个表中的数据
DVWA靶场环境搭建
Unity教程:URP渲染管线实战教程系列【1】
ERP Production Operation Control Kingdee
prompt.ml/15中<svg>标签使用解释
Unity Tutorial: URP Rendering Pipeline Practical Tutorial Series [1]
CentOS7 —— yum安装mysql
矩池云快速安装torch-sparse、torch-geometric等包
剑指offer专项突击版第15天
Mysql application cannot find my.ini file after installation
【R语言】【3】apply,tapply,lapply,sapply,mapply与par函数相关参数
高斯分布及其极大似然估计
sql语句之多表查询