Golang Gin 框架之分组路由(五)

简介: Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在分组路由方面的内容。正文分组路由说到分组路由,你一定会问为什么要搞分组路由?分组路由有什么优势?下面就详细介绍一下。

目录

  • 分组路由
  • 编码简单,结构清晰
  • 扩展方便,便于管理

前言

Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在分组路由方面的内容。

正文

分组路由

说到分组路由,你一定会问为什么要搞分组路由?分组路由有什么优势?下面就详细介绍一下。

编码简单,结构清晰

使用分组路由可以为我们带来很多好处,比如编码会非常简单,结构也会非常清晰,下面看两段代码示例:

使用路由分组之前:

funcmain() {
router :=gin.Default()
router.POST("/v1/login", loginEndpoint)
router.POST("/v1/submit", submitEndpoint)
router.POST("/v1/send", sendEndpoint)
router.POST("/v1/aaa", aaaaEndpoint)
router.POST("/v1/bbb", bbbbEndpoint)
router.POST("/v1/ccc", ccccEndpoint)
router.POST("/v1/ddd", ddddEndpoint)
router.Run(":8080")
}

上面的编码方式会产生非常多的路由前缀 V1,感觉很繁琐。

使用路由分组之后:

funcmain() {
router :=gin.Default()
// 分组 v1v1 :=router.Group("/v1")
    {
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/send", sendEndpoint)
v1.POST("/aaa", aaaaEndpoint)
v1.POST("/bbb", bbbbEndpoint)
v1.POST("/ccc", ccccEndpoint)
v1.POST("/ddd", ddddEndpoint)
    }
router.Run(":8080")
}

此时,可以看到,相同的路由前缀 V1 被抽离出去,变成了一个分组。这样的代码看起来就非常简洁。

扩展方便,便于管理

使用分组路由可以让我们的代码便于扩展和管理,通过修改路由分组可以非常轻松扩展出另外一套API接口。比如,下面的代码就演示了从v1分组扩展到v2分组的方式,非常方便。

funcmain() {
router :=gin.Default()
// 分组 v1v1 :=router.Group("/v1")
    {
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/send", sendEndpoint)
v1.POST("/aaa", aaaaEndpoint)
v1.POST("/bbb", bbbbEndpoint)
v1.POST("/ccc", ccccEndpoint)
v1.POST("/ddd", ddddEndpoint)
    }
// 分组 v2v2 :=router.Group("/v2")
    {
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/send", sendEndpoint)
v2.POST("/aaa", aaaaEndpoint)
v2.POST("/bbb", bbbbEndpoint)
v2.POST("/ccc", ccccEndpoint)
v2.POST("/ddd", ddddEndpoint)
    }
router.Run(":8080")
}

分组之后,我们可以非常清晰哪些代码逻辑属于分组v1,哪些代码逻辑属于分组v2。

结尾

在 Gin 中合理的使用分组路由可以让编码更加简单,结构更加清晰,同时,之后的代码扩展更加方便,便于管理。感兴趣的小伙伴们,不妨一试呦!



作者简介:大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,同时也是CSDN博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!


目录
相关文章
|
6月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
396 86
|
8月前
|
人工智能 负载均衡 监控
使用 Go 和 Gin 实现高可用负载均衡代理服务器
本文基于Go语言和Gin框架,实现了一个企业级负载均衡代理服务器,支持动态路由、健康检查、会话保持等功能。具备高可用性与高性能,单节点支持100k+ QPS,延迟达亚毫秒级,并提供完整的压力测试方案与优化建议。
247 7
|
9月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
11月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
548 35
|
Go 数据安全/隐私保护
go 基于gin编写encode、decode、base64加密接口
go 基于gin编写encode、decode、base64加密接口
328 2
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
2099 27
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
1687 1
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
426 1
|
JSON 中间件 Go
Go语言Web框架Gin介绍
【7月更文挑战第19天】Gin是一个功能强大、高性能且易于使用的Go语言Web框架。它提供了路由、中间件、参数绑定等丰富的功能,帮助开发者快速构建高质量的Web应用。通过本文的介绍,你应该对Gin框架有了初步的了解,并能够使用它来开发简单的Web服务。随着你对Gin的深入学习和实践,你将能够利用它构建更复杂、更强大的Web应用。

推荐镜像

更多