V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
usralpha
V2EX  ›  Go 编程语言

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

  •  1
     
  •   usralpha · 2021-01-12 23:02:23 +08:00 · 2303 次点击
    这是一个创建于 1171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    位置 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,谢谢!

    8 条回复    2021-01-13 11:16:41 +08:00
    zoharSoul
        1
    zoharSoul  
       2021-01-12 23:06:48 +08:00
    感觉挺有意思的
    wellsc
        2
    wellsc  
       2021-01-12 23:28:43 +08:00
    👍
    usralpha
        3
    usralpha  
    OP
       2021-01-12 23:29:34 +08:00
    @zoharSoul 谢谢!头一次得到支持
    usralpha
        4
    usralpha  
    OP
       2021-01-12 23:29:45 +08:00
    @wellsc 谢谢!
    kidlj
        5
    kidlj  
       2021-01-13 00:00:34 +08:00 via iPhone
    Go 支持装饰器就好了,不过我觉得希望不大😂
    gowk
        6
    gowk  
       2021-01-13 09:09:54 +08:00
    妈耶,这波操作太骚了
    ansi395958
        7
    ansi395958  
       2021-01-13 09:23:34 +08:00
    👍 之前也做过一个基于注解生成 API 文档的,https://github.com/thewinds/mkdoc
    TypeErrorNone
        8
    TypeErrorNone  
       2021-01-13 11:16:41 +08:00
    没啥用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1652 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:48 · PVG 00:48 · LAX 09:48 · JFK 12:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.