一,中间件的使用
在web应用服务中,完整的一个业务处理在技术上包含客户端操作、服务器端处理、返回处理结果给客户端三个步骤。
在实际的业务开发和处理中,会有更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证、权限管理、安全检查、日志记录等多维度的系统支持。
鉴权认证、权限管理、安全检查、日志记录等这些保障和支持系统业务属于全系统的业务,和具体的系统业务没有关联,对于系统中的所有业务都适用。
将上述描述所涉及的一些通用业务单独抽离并进行开发所使用的组件,就称为中间件。
//中间件定义
type HandlerFunc func(*Context)
//engine:=gin.Default()与engine:=gin.new()的区别就在于
//gin.Default()使用了logger和Recovery两个中间件
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}
//Log中间件
func Logger() HandlerFunc {
return LoggerWithConfig(LoggerConfig{})
}
//Recovery中间件
func Recovery() HandlerFunc {
return RecoveryWithWriter(DefaultErrorWriter)
}
我们可以通过自己自定义中间件来编写函数(注意两点):
-
func函数
-
返回值类型为HandlerFunc
func Reques() gin.HandlerFunc { //reques函数传入参数为空,返回的参数为handlerfunc函数类型
return func(context *gin.Context) { //返回函数的处理操作
path := context.FullPath()
method := conte