gin gonic中间件,如何获取链中下一个处理程序的失败/成功状态
我正在使用gin-gonic-golang框架编写一个中间件。我想知道在我的中间件中,对下一个处理程序的调用是否失败,并据此采取行动gin gonic中间件,如何获取链中下一个处理程序的失败/成功状态,go,go-gin,Go,Go Gin,我正在使用gin-gonic-golang框架编写一个中间件。我想知道在我的中间件中,对下一个处理程序的调用是否失败,并据此采取行动 func foo() gin.HandlerFunc { //do something.. c.Next() //do something based on result of c.Next() } 我该怎么做?下一步的文档没有提供太多信息 你能提供一些建议吗。我基本上想检查不存在的api端点,例如,有人输入一个URL,我们没有任何api
func foo() gin.HandlerFunc {
//do something..
c.Next()
//do something based on result of c.Next()
}
我该怎么做?下一步的文档没有提供太多信息
你能提供一些建议吗。我基本上想检查不存在的api端点,例如,有人输入一个URL,我们没有任何api端点,那么我可以在这里检测它 在
引擎上有一个名为的方法,您可以传递路由处理程序来处理404之类的问题。我将回答我的问题,因为我找到了一种方法来处理这类问题,比如找不到路由/找不到方法等。其思想是使用context.error()在gin上下文中设置一个错误从NoRoute/NoMethod处理程序。这会在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.
})
希望能有帮助 谢谢,我正在使用NoRoute,我仍然看到我的中间件被调用(当没有找到路由时),所以我仍然希望在我的中间件函数中进行控制。你解决了这个问题吗?我有同样的问题