- 授权协议: Apache
- 开发语言: Google Go
- 操作系统: 跨平台
- 软件首页: https://github.com/alimy/mir
- 软件文档: https://godoc.org/github.com/alimy/mir
- 官方下载: https://github.com/alimy/mir/releases
软件介绍
go-mir 是一个使用 golang 结构体标签信息将方法注册为 http engine handler 的辅助库,目前支持将方法注册到 Gin, Echo, Iris, Macaron, Mux, httprouter。
主要功能:
使用 go 结构体标签定义 handler 的路由信息用于注册
通过反射机制根据结构体标签信息获取结构体方法,并依据结构体标签信息注册到相应的 http engine 中,比如 Gin, Echo, Iris, Macaron, Mux, httprouter
使用结构体方法编写 http handler
使用结构体标签定义 Middleware 信息,并注册到 http engine 中
代码示例:(eg: gin backend)
Get Mir.Gin module first
go get github.com/alimy/mir/module/gin@master
Then happy in codding enjoy your heart...
package main
import(
"github.com/alimy/mir"
"github.com/gin-gonic/gin"
"net/http"
mirE "github.com/alimy/mir/module/gin"
)
type site struct {
Chain mir.Chain `mir:"-"`
Group mir.Group `mir:"v1"`
index mir.Get `mir:"/index/"`
articles mir.Get `mir:"/articles/:category/#GetArticles"`
}
// Index handler of the index field that in site struct, the struct tag indicate
// this handler will register to path "/index/" and method is http.MethodGet.
func (h *site) Index(c *gin.Context) {
c.String(http.StatusOK, "get index data")
}
// GetArticles handler of articles indicator that contains Host/Path/Queries/Handler info.
// Path info is the second or first(if no host info) segment start with '/'(eg: /articles/:category/#GetArticles)
// Handler info is forth info start with '#' that indicate real handler method name(eg: GetArticles).if no handler info will
// use field name capital first char as default handler name(eg: if articles had no #GetArticles then the handler name will
// is Articles)
func (h *site) GetArticles(c *gin.Context) {
c.String(http.StatusOK, "get articles data")
}
func main() {
//Create a new gin engine
engine := gin.New()
// Register handler to engine by mir
mirE.Register(engine, &site{Chain: gin.HandlersChain{gin.Logger()}})
// Start gin engine serve
engine.Run()
}
