gin框架38--使用中间件

2024-05-30 23:38
文章标签 使用 框架 38 中间件 gin

本文主要是介绍gin框架38--使用中间件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

gin框架38--使用中间件

  • 介绍
  • 案例
  • 说明

介绍

本文主要介绍如何在gin框架中使用中间件,并通过案例加以说明。使用MyBenchLogger中间件来输出特有的日志,用AuthRequire中间件来实现基础认证。

案例

package mainimport ("github.com/gin-gonic/gin""log""time"
)func MyBenchLogger() gin.HandlerFunc {return func(c *gin.Context) {t := time.Now()// 设置 example 变量c.Set("example", "12345")// 请求前c.Next()// 请求后latency := time.Since(t)log.Printf("latency=%v\n", latency)// 获取发送的 statusstatus := c.Writer.Status()log.Printf("status=%v\n", status)}
}func benchEndpoint(c *gin.Context) {c.String(200, "hello benchmark")
}
func loginEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func submitEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func readEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}
func analyticsEndpoint(c *gin.Context) {c.String(200, c.Request.URL.String())
}func AuthRequire() gin.HandlerFunc {return gin.BasicAuth(gin.Accounts{"foo":  "bar", // user:foo password:bar"manu": "123", // user:manu password:123})
}func main() {// 新建一个没有任何默认中间件的路由r := gin.New()// 全局中间件// Logger 中间件将日志写入 gin.DefaultWriter,即使你将 GIN_MODE 设置为 release。// By default gin.DefaultWriter = os.Stdoutr.Use(gin.Logger())// Recovery 中间件会 recover 任何 panic。如果有 panic 的话,会写入 500。r.Use(gin.Recovery())// 你可以为每个路由添加任意数量的中间件。r.GET("/benchmark", MyBenchLogger(), benchEndpoint)// 认证路由组// authorized := r.Group("/", AuthRequired())// 和使用以下两行代码的效果完全一样:authorized := r.Group("/")// 路由组中间件! 在此例中,我们在 "authorized" 路由组中使用自定义创建的// AuthRequired() 中间件authorized.Use(AuthRequire()){authorized.POST("/login", loginEndpoint)authorized.POST("/submit", submitEndpoint)authorized.GET("/read", readEndpoint)// 嵌套路由组testing := authorized.Group("testing")testing.GET("/analytics", analyticsEndpoint)}// 监听并在 0.0.0.0:8080 上启动服务r.Run(":8080")
}

测试:
http://127.0.0.1:8080/benchmark
在这里插入图片描述
输出如下终端日志:

2022/04/04 11:05:12 latency=46.103µs
2022/04/04 11:05:12 status=200
[GIN] 2022/04/04 - 11:05:12 | 200 |     116.724µs |       127.0.0.1 | GET      "/benchmark"

http://127.0.0.1:8080/read
在这里插入图片描述
在这里插入图片描述

说明

gin官方文档 使用中间件

这篇关于gin框架38--使用中间件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017084

相关文章

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数