最近編寫了一個給 gin 框架實現註解路由的工具,個人覺得挺有實際意義

ttttttedgd發表於2021-01-12

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

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章