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

举报
liuzhen007 发表于 2021/11/27 15:41:18 2021/11/27
【摘要】 目录前言正文分组路由编码简单,结构清晰扩展方便,便于管理结尾前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在分组路由方面的内容。正文分组路由说到分组路由,你一定会问为什么要搞分组路由?分组路由有什么优势?下面就详细介绍一下。编码简单,结构清晰使用分...

目录

  • 前言

  • 正文

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

前言

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

正文

分组路由

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

编码简单,结构清晰

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

使用路由分组之前:

func main() {
	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,感觉很繁琐。

使用路由分组之后:

func main() {
	router := gin.Default()

	// 分组 v1
	v1 := 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分组的方式,非常方便。

func main() {
	router := gin.Default()

	// 分组 v1
	v1 := 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)
	}

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

	router.Run(":8080")
}

复制代码

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

结尾

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

作者简介:大家好,我是 liuzhen007,是一位音视频技术爱好者,同时也是CSDN博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。