最近编写了一个给 gin 框架实现注解路由的工具,个人觉得挺有实际意义

2021-01-12 23:02:23 +08:00
 usralpha

位置 github.com/1-st/gin-annotation 实现的效果像这样:


/* Hello a simple controller
[
	method:GET,
	groups:/api,
	path:/hello-world,
	need:auth
]
*/
func HelloWorld(ctx *gin.Context) {
	ctx.JSON( http.StatusOK, map[string]string{
		"msg": "hello, world",
	})
}

思路:读取 Go 源代码的 AST 文件,然后生成一个 route.entry.go 路由文件,像这样:

import (
	"gin-annotation/_example/simple/controller"
	"gin-annotation/_example/simple/middleware"
	"github.com/gin-gonic/gin"
)

func Route(e *gin.Engine) {
	api := e.Group("/api", middleware.Log)
	{
		v1 := api.Group("/v1")
		{
			v1.GET("/hello-world", middleware.Auth, controller.HelloWorld)
		}
	}
}

如果觉得有用 /有趣请 star,谢谢!

2341 次点击
所在节点    Go 编程语言
8 条回复
zoharSoul
2021-01-12 23:06:48 +08:00
感觉挺有意思的
wellsc
2021-01-12 23:28:43 +08:00
👍
usralpha
2021-01-12 23:29:34 +08:00
@zoharSoul 谢谢!头一次得到支持
usralpha
2021-01-12 23:29:45 +08:00
@wellsc 谢谢!
kidlj
2021-01-13 00:00:34 +08:00
Go 支持装饰器就好了,不过我觉得希望不大😂
gowk
2021-01-13 09:09:54 +08:00
妈耶,这波操作太骚了
ansi395958
2021-01-13 09:23:34 +08:00
👍 之前也做过一个基于注解生成 API 文档的,https://github.com/thewinds/mkdoc
TypeErrorNone
2021-01-13 11:16:41 +08:00
没啥用

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

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

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

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

© 2021 V2EX