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 年 1 月 12 日 · 3162 次点击
    这是一个创建于 1833 天前的主题,其中的信息可能已经有所发展或是发生改变。

    位置 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 年 1 月 12 日
    感觉挺有意思的
    wellsc
        2
    wellsc  
       2021 年 1 月 12 日
    👍
    usralpha
        3
    usralpha  
    OP
       2021 年 1 月 12 日
    @zoharSoul 谢谢!头一次得到支持
    usralpha
        4
    usralpha  
    OP
       2021 年 1 月 12 日
    @wellsc 谢谢!
    kidlj
        5
    kidlj  
       2021 年 1 月 13 日 via iPhone
    Go 支持装饰器就好了,不过我觉得希望不大😂
    gowk
        6
    gowk  
       2021 年 1 月 13 日
    妈耶,这波操作太骚了
    ansi395958
        7
    ansi395958  
       2021 年 1 月 13 日
    👍 之前也做过一个基于注解生成 API 文档的,https://github.com/thewinds/mkdoc
    TypeErrorNone
        8
    TypeErrorNone  
       2021 年 1 月 13 日
    没啥用
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   955 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:21 · PVG 04:21 · LAX 12:21 · JFK 15:21
    ♥ Do have faith in what you're doing.