猿问

gin gonic 中间件,如何获取链中下一个处理程序的失败/成功状态

我正在编写一个中间件,使用 gin gonic golang 框架。我想知道在我的中间件中,对下一个处理程序的调用是否失败并据此采取行动。


func foo() gin.HandlerFunc {

    //do something..

    c.Next()

    //do something based on result of c.Next()

}

我怎样才能做到这一点?下一个文档没有提供太多信息https://godoc.org/github.com/gin-gonic/gin#Context.Next


你能提供任何建议。我基本上想检查不存在的api端点,例如,有人输入一个URL,我们没有任何api端点,那么我可以在这里检测它吗?


杨魅力
浏览 191回答 2
2回答

森栏

有一种方法可以Engine调用NoRoute,您可以传递路由处理程序来处理 404 等。

智慧大石

我将回答我的问题,因为我找到了一种方法来处理找不到路由/找不到方法等问题。这个想法是使用 NoRoute/NoMethod 中的 context.Error() 在 gin 上下文中设置错误处理程序。这会在 c.Errors 中的错误切片中添加一个错误,然后可以在您的中间件函数中使用它。func MyMiddleware() gin.HandlerFunc {    return func(c *gin.Context) {       //do something here       c.Next()       //do something based on error in c.       if c.Errors.Error() != nil {           //error case, get out           return        }       //else continue regular processing.     }}engine.NoRoute(func(c *gin.Context) {    c.JSON(404,        gin.H{"error": gin.H{            "key":         "not allowed",            "description": "not allowed",        }})    c.Error(errors.New("Failed to find route")) //Set the error here. })希望能帮助到你。
随时随地看视频慕课网APP

相关分类

Go
我要回答