Description
Why execute router.Use(xxx) first and then router.NoRoute(xxx)? In addition, if it is necessary to run router.Use after occurrence of router.NoRoute? Because I did some request verification in router.Use(xxx).
How to reproduce
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
//The coding sequence of router.NoRoute(xxx) and router.Use(xxx) does not affect the execution result.
router.NoRoute(func (c *gin.Context) {
c.String(404, "404")
})
router.Use(func (c *gin.Context) {
fmt.Println("init")
})
router.GET("/", func(c *gin.Context) {
c.String(200, "OK")
})
router.Run()
}
Expectations
$ curl http://127.0.0.1:8080/other
404(But I do not want router.Use(xxx) to run.)
Actual result
$ curl http://127.0.0.1:8080/other
404(console print "init".)
Environment
- go version: go1.19.3 windows/amd64
- gin version (or commit ref): v1.8.1
- operating system: Windows 10 professional(64 bit)
Comment From: MmToon
This is the way to solve the problem, in router.Use(xxx).
......
if fullPath = c.FullPath(); fullPath == "" {
c.String(404, "404")
c.Abort()
return
}
......