The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
usralpha

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

  •  1
     
  •   usralpha · Jan 12, 2021 · 3436 views
    This topic created in 1971 days ago, the information mentioned may be changed or developed.

    位置 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 replies    2021-01-13 11:16:41 +08:00
    zoharSoul
        1
    zoharSoul  
       Jan 12, 2021
    感觉挺有意思的
    wellsc
        2
    wellsc  
       Jan 12, 2021
    👍
    usralpha
        3
    usralpha  
    OP
       Jan 12, 2021
    @zoharSoul 谢谢!头一次得到支持
    usralpha
        4
    usralpha  
    OP
       Jan 12, 2021
    @wellsc 谢谢!
    kidlj
        5
    kidlj  
       Jan 13, 2021 via iPhone
    Go 支持装饰器就好了,不过我觉得希望不大😂
    gowk
        6
    gowk  
       Jan 13, 2021
    妈耶,这波操作太骚了
    ansi395958
        7
    ansi395958  
       Jan 13, 2021
    👍 之前也做过一个基于注解生成 API 文档的,https://github.com/thewinds/mkdoc
    TypeErrorNone
        8
    TypeErrorNone  
       Jan 13, 2021
    没啥用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2968 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 14:31 · PVG 22:31 · LAX 07:31 · JFK 10:31
    ♥ Do have faith in what you're doing.