gin框架使用注意事项
本文就说下这段时间我在使用gin框架过程中遇到的问题和要注意的事情。
错误处理请求返回要使用c.Abort,不要只是return
当在controller中进行错误处理的时候,发现一个错误,往往要立即返回,这个时候要记得使用gin.Context.Abort 或者其相关的函数。
类似于:
if err != nil {
c.AbortWithStatus(500)
return
}
这个Abort函数本质是提前结束后续的handler链条,(通过将handler的下标索引直接变化为 math.MaxInt8 / 2 )但是前面已经执行过的handler链条(包括middleware等)还会继续返回。
gin的Abort系列的几个函数为:
func (c *Context) Abort()
func (c *Context) AbortWithStatus(code int)
func (c *Context) AbortWithStatusJSON(code int, jsonObj interface{})
func (c *Context) AbortWithError(code int, err error)
gin的错误处理
gin本身默认加载了Recovery()的中间件,所以在不知道如何处理error的时候,可以直接panic出去
如何获取response的body
需求来源于我要做个gin的中间件,请求进来的时候记录一下请求参数,请求出去的时候记录一下请求返回值。在记录请求返回值的时候,我就需要得到请求的返回内容。但是context里面只有一个结构&#x