猿问

急求!!!!goalng框架Gin中间件的c.Next()有什么作用?

感觉用不用效果一样的啊,看文档说是执行挂起程序,具体怎么好理解一些呢,每个中间件一定要用吗?
九州编程
浏览 458回答 2
2回答

收到一只叮咚

中间件可以理解为洋葱穿透。c.Next()之前的操作是在Handler执行之前就执行;c.Next()之后的操作是在Handler执行之后再执行;funcMiddleware(c*gin.Context){fmt.Println("HelloBefore;")c.Next()fmt.Println("HelloAfter;")}然后你在Handler中输出一些内容就能发现。HelloBefore在你的Handler之前就输出。HelloAfter在之后输出。之前的操作一般用来做验证处理,访问是否允许之类的。之后的操作一般是用来做总结处理,比如格式化输出、响应结束时间,响应时长计算之类的。

慕少森

中间件用的,不要管啥挂不挂起的,我估计是翻译的锅。假如你用两个中间件//打印请求处理事件funcMiddleware1(ctx*gin.Context){start:=time.Now()//记录开始时间ctx.Next()//调用处理过程(会产生调用耗时)t:=time.Since(start)//调用处理过程完毕后计算时间差fmt.Println(t)//打印本次请求处理时间差}funcMiddleware2(ctx*gin.Context){if(!service.CheckLogin(ctx)){//登录检测,未登录return//直接return,该请求的处理结束}ctx.Next()//登录检测通过,继续后续处理}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答