网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
v1.GET("/users", usersHandler)
}
在这里,我们创建了一个基础路径为`/v1`的路由组,并在其下添加了两个路由:`/v1/system`和`/v1/users`。
### 2. 路径匹配和优先级
Gin的路由解析器是基于优先级来匹配请求的。这意味着Gin会根据添加路由的顺序和路径的具体程度来决定哪个路由应当响应请求。
#### 2.1 匹配顺序
当Gin接收到一个请求时,它会从最具体(最长)的路由开始检查,并向上回退到更通用的路由。这意味着,如果有两个路由`/v1`和`/v1/system`,并且一个请求的路径为`/v1/system`,Gin会优先匹配`/v1/system`,因为它更具体。
#### 2.2 示例
考虑以下路由:
router := gin.Default()
router.GET(“/v1”, handler1)
v1 := router.Group(“/v1”)
{
v1.GET(“/system”, handler2)
}
* 当请求`GET /v1`时,`handler1`将响应此请求。
* 当请求`GET /v1/system`时,尽管`/v1`与请求的路径相匹配,但Gin会选择`/v1/system`,因为它提供了更精确的匹配。因此,`handler2`将响应此请求。
#### 2.3 路径变量和匹配
值得注意的是,路径变量(例如`/v1/:id`)可能会引入额外的复杂性。Gin在匹配路径变量时也遵循相似的优先级规则,但实际应用中可能会有更多的边缘情况。
### 3. 实际应用中的考虑
在设计API时,考虑如何有效利用路由组来组织路由是很重要的。确保路由的结构直观且易于维护,同时避免潜在的匹配冲突。
### 4. 结论
![img](https://img-blog.csdnimg.cn/img_convert/4996a330a373390a7674579fdf977e9a.png)
![img](https://img-blog.csdnimg.cn/img_convert/1d1f2129888db3659c1808bd40be0d3d.png)
![img](https://img-blog.csdnimg.cn/img_convert/680b37de273ec89ecd16869881d9eca7.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**
且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**