参考url: https://segmentfault.com/q/1010000020256918
调用Next函数会立刻自信后续的handler,反之,等本中间件执行完毕后,再执行后续的handler
立刻终止handler的执行和后续待执行的handler的执行的相关函数
参考url https://godoc.org/github.com/gin-gonic/gin
func (*Context) Abort
func (c *Context) Abort()
Abort prevents pending handlers from being called. Note that this will not stop the current handler. Let's say you have an authorization middleware that validates that the current request is authorized. If the authorization fails (ex: the password does not match), call Abort to ensure the remaining handlers for this request are not called.
func (*Context) AbortWithError
func (c *Context) AbortWithError(code int, err error) *Error
AbortWithError calls `AbortWithStatus()` and `Error()` internally. This method stops the chain, writes the status code and pushes the specified error to `c.Errors`. See Context.Error() for more details.
func (*Context) AbortWithStatus
func (c *Context) AbortWithStatus(code int)
AbortWithStatus calls `Abort()` and writes the headers with the specified status code. For example, a failed attempt to authenticate a request could use: context.AbortWithStatus(401).
func (*Context) AbortWithStatusJSON
func (c *Context) AbortWithStatusJSON(code int, jsonObj interface{})
AbortWithStatusJSON calls `Abort()` and then `JSON` internally. This method stops the chain, writes the status code and return a JSON body. It also sets the Content-Type as "application/json".