在今天这篇文章中,我们来谈谈Gin框架中间件(middleware
)的使用,应该说Gin的中间件是Gin框架中一个非常重要的内容,而且Gin中间件也是使用Gin框架开发一个完整Web程序时不可或缺的部分,所以有必要好了解一下。
什么是Gin中间件
Gin中间件是什么?Gin中间件的作用是什么?要怎么样使用中间件呢?
1. Gin中间件的作用
好吧,简单来说,Gin中间件的作用有两个:
-
Web请求到到达我们定义的HTTP请求处理方法之前,拦截请求并进行相应处理(比如:权限验证,数据过滤等),这个可以类比为
前置拦截器
或前置过滤器
, -
在我们处理完成请求并响应客户端时,拦截响应并进行相应的处理(比如:添加统一响应部头或数据格式等),这可以类型为
后置拦截器
或后置过滤器
。
2. Gin中间件的定义
在Gin框架中,中间件的类型定义如下代码所示,可以看出,中间件实际上就是一个以gin.Context为形参的函数而已,与我们定义处理HTTP请求的Handler本质上是一样的,并没有什么神秘可言。
type HandlerFunc func(*Context)
复制代码
3. Gin内置中间件
在使用Gin框架开发Web应用时,常常需要自定义中间件,不过,Gin也内置一些中间件,我们可以直接使用,下面是内置中间件列表:
func BasicAuth(accounts Accounts) HandlerFunc
func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
func Bind(val interface{}) HandlerFunc //拦截请求参数并进行绑定
func ErrorLogger() HandlerFunc //错误日志处理
func ErrorLoggerT(typ ErrorType) HandlerFunc //自定义类型的错误日志处理
func Logger() HandlerFunc //日志记录
func LoggerWithConfig(conf LoggerConfig) HandlerFunc
func LoggerWithFormatter(f LogFormatter) HandlerFunc
func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc
func Recovery() HandlerFunc
func RecoveryWithWriter(out io.Writer) HandlerFunc
func WrapF(f http.HandlerFunc) HandlerFunc //将http.HandlerFunc包装成中间件
func WrapH(h http.Handler) HandlerFunc //将http.Handler包装成中间件
复制代码