Gin中间件
Gin中间件
内置中间件
- func BasicAuth(accounts Accounts) HandlerFunc
- func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc realm:认证分组
- 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包装成中间件
二种方式创建中间件
// 传递参数 |
Gin中间件方法
Next
C.next()会先调用后面中间件的方法,直到没有,倒回去执行
在我们定义的众多中间件,会形成一条中间件链,而通过 Next 函数来对后面的中间件进行执行
特点:
当遇到c.Next()函数时 它取出所有的没被执行过的注册的函数都执⾏⼀遍,然后再回到本函数中,有点类似递归函数
Next 函数是在请求前执行,而 Next 函数后是在请求后执行。
可以用在token校验,把用户id存起来供给功能性函数使用
About
终止中间件链条
- ctx.Abort()方法的作用 终止调用整个链条
- 比如:token认证没有通过,不能直接使用return返回,而是使用Abort来终止
中间件(全局、局部)
路由组使用
v1 := router.Group("/v1") |
全局使用
绑定在根router上即可 |
局部使用
func Middle1Ware() gin.HandlerFunc{ |
BasicAuth中间件
// 局部使用中间价 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论