忽然发现 Gin 的路由冲突被解决了

2022-09-01 12:12:19 +08:00
 honmaple

版本: v1.8.1

func main() {
	r := gin.Default()
	r.GET("/v1/static", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "ping",
		})
	})
	r.GET("/v1/:pk", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run()
}

很久没用 Gin 了,今天测试时才发现静态路由和参数路由不再报错,不过/v1/static/v1/*path还是有问题

3519 次点击
所在节点    Go 编程语言
8 条回复
janxin
2022-09-01 12:28:05 +08:00
FightPig
2022-09-01 12:48:20 +08:00
我就是因为这个原因最后自己拼了个框架,没想到啥时候解决了,,
honmaple
2022-09-01 13:11:44 +08:00
@janxin 很久没用 gin 了,我今天才发现
honmaple
2022-09-01 13:18:34 +08:00
@FightPig 我也是自己写了一个路由框架,刚写到不用 gin 最大的理由就是路由冲突,本着严谨的态度测试一下,没想到解决了
eudore
2022-09-02 08:41:35 +08:00
你注册顺序写反了,常量>变量>通配符 要按照优先级顺序倒着写就冲突了,冲突是从 httprouter 继承过来的祖传特性。
ericgui
2022-09-07 06:36:17 +08:00
你把这俩路由换一下就冲突了
honmaple
2022-09-07 08:40:29 +08:00
@eudore @ericgui 为何不亲自试一下呢?
ericgui
2022-09-07 09:43:06 +08:00
@honmaple 我就是 1.8.1

我用这俩 route ,冲突了,

GET /user/:id
GET /user/:id/posts

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/876967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX