为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2019-09-05 08:57:40
感觉用不用效果一样的啊,看文档说是执行挂起程序,具体怎么好理解一些呢,每个中间件一定要用吗?
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

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

TA贡献2019条经验 获得超9个赞

中间件用的,不要管啥挂不挂起的,我估计是翻译的锅。假如你用两个中间件
//打印请求处理事件
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()//登录检测通过,继续后续处理
}
                            
查看完整回答
反对 回复 2019-09-05
  • 2 回答
  • 0 关注
  • 457 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信