Gin 中间件执行顺序及一些误区
编辑
563
2023-10-17
误区 1:c.Next()
后,修改 header 不生效
因为在 c.Next()
之前,已经把响应给到客户端了(c.Writer 已经 flush 了),因此再修改也没有用了。
在 controller 里面 c.Json()
之后,实际上响应已经 Render()
进 c.Writer
了(注意此时 c.Writer
还没有 flush,要等到所有中间件执行完才会 flush。),所以再修改已经没有用了。
补充:在所有中间件和 contrller 执行完后,request 会交回给 server,在finishRequest()
的时候,才会真正Flush()
。
误区 2:c.Abort()
后,c.Next()
之后的逻辑还会执行
c.Abort()
只是不再往栈里放handlerFunc
,已经放入栈中的会继续执行,逐个出栈。
Ref
- 0
- 0
-
赞助
微信赞赏码 -
分享