概述
使用 gin
配置路由的时候,经常会遇到典型的if else
场景:
对于指定路径,我希望走 A
HandlerFunc
, 对于未定义的其它路径,走 B
HandlerFunc
但是在实际配置 else
过程中(也就是未定义的其它路径)发现,
Engine
类型,有 NoRoute
方法,可以满足 if else
场景里的 else
但是对于 group
来说,没有 NoRoute
方法,无法处理这个 group
里面剩下未定义路径的 HandlerFunc
github 上面搜了搜,有 issuse
和对应的解决方法
issuse链接
预期
想要达到的效果如下(代码copy自 github)
show := router.Group("/show")
{
show.GET("/show/:filename", ShowFile)
show.NoRoute(ShowNoRoute)
}
how to do
(代码copy自 github)
func main() {
router := gin.Default()
router.NoRoute(func(c *gin.Context) {
path := c.Request.URL.Path
method := c.Request.Method
fmt.Println(path)
fmt.Println(method)
if strings.HasPrefix(path, "/show") {
fmt.Println("ok")
}
})
router.Run()
}