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 签约作者,欢迎关注我分享更多干货!


目录
相关文章
|
2月前
|
中间件 Go 数据库
Go开发者必读:Gin框架的实战技巧与最佳实践
在当今快速发展的互联网时代,Web开发的需求日益增长。Go语言以其简洁、高效、并发性强的特点,成为了开发者们的首选。而在Go语言的众多Web框架中,Gin无疑是其中的佼佼者。本文将深入探讨Gin框架的特性、优势以及如何利用Gin构建高性能的Web应用。
|
3月前
|
Go
golang力扣leetcode 49.字母异位词分组
golang力扣leetcode 49.字母异位词分组
17 0
|
6月前
|
监控 Go
Golang 语言 beego v2 之路由设置
Golang 语言 beego v2 之路由设置
80 0
|
6月前
|
开发框架 Go 微服务
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
116 0
|
3月前
|
C++ 算法 存储
力扣 C++|一题多解之动态规划专题(2)
力扣 C++|一题多解之动态规划专题(2)
39 0
力扣 C++|一题多解之动态规划专题(2)
|
3月前
|
关系型数据库 MySQL Go
go语言使用Gin框架链接数据库
go语言使用Gin框架链接数据库
40 0
|
3月前
|
JavaScript 前端开发 NoSQL
go embed 实现gin + vue静态资源嵌入
go embed 实现gin + vue静态资源嵌入
64 0
|
3月前
|
中间件 Go
go 打印gin 中的c.Request的参数
在 Gin 框架中,可以通过 `c.Request` 获取请求对象,从而访问请求的参数。以下是一个示例,展示如何打印出 `c.Request` 中的参数: ```go package main import ( "fmt" "github.com/gin-gonic/gin" ) func LoggerMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // 打印请求方法和路径 fmt.Printf("开始处理请求: %s %s\n", c.Request.Method, c.Request.URL.Pa
|
9月前
|
XML JSON 缓存
Gin实战演练|Go主题月
in实战 1 gin的简单使用
|
9月前
|
缓存 NoSQL 中间件
用golang搭建springboot风格项目结构 gin+gorm
最近学了学go语言,想练习一下用go开发web项目,项目结构弄个什么样呢。