Description
I need two paths in one of my project
/:token /:customPath/:token
i understand the issues with the http router is their any any workaround to fix this issue other than adding a wild card pattern and match with interceptor
How to reproduce
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/:custom/:token", func(c *gin.Context) {
custom := c.Param("custom")
token := c.Param("token")
c.JSON(200, gin.H{
"message": "Specific route",
"custom": custom,
"token": token,
})
})
r.GET("/:token", func(c *gin.Context) {
token := c.Param("token")
c.JSON(200, gin.H{
"message": "General route",
"token": token,
})
})
r.Run(":8080") // Start the server on port 8080
}
Expectations
panic: ':token' in new path '/:token' conflicts with existing wildcard ':custom' in existing prefix '/:custom'
Environment
- go version: 1.23.4
- gin version (or commit ref): 1.10.0
- operating system: macOS 15.2
Comment From: pscheid92
Hello @sreejithag, depending on your project's semantics, you could use a static prefix to work around this issue:
Example 1\
Add a static /general/
prefix to mark the general route.
r.GET("/general/:token", ...)
r.GET("/:custom/:token", ...)
Example 2
Make the route for customs explicit by adding a static /customs/
prefix.
r.GET("/customs/:custom/:token", ...)
r.GET("/:token", ...)