添加 Context 原语用于指示代码生成器 生成http引擎框架原生的handler作为接口方法;eg: gin as engine
// go-mir route interface define file
// Site site interface info
type Site struct {
Chain `mir:"-"`
Index func(Get, Chain) `mir:"/index/"`
Assets func(Get, Context) `mir:"/assets/:name"`
}
使用gin的代码生成器生成的代码如下
type _binding_ interface {
Bind(*gin.Context) mir.Error
}
// Chain provide handlers chain for gin
Chain() gin.HandlersChain
Assets(*gin.Context)
Index() mir.Error
mustEmbedUnimplementedSiteServant()
}
// RegisterSiteServant register Site servant to gin
func RegisterSiteServant(e *gin.Engine, s Site, m ...SiteChain) {
var cc SiteChain
if len(m) > 0 {
cc = m[0]
} else {
cc = &UnimplementedSiteChain{}
}
router := e
// use chain for router
middlewares := s.Chain()
router.Use(middlewares...)
功能特性
Context
原语用于指示代码生成器 生成http引擎框架原生的handler作为接口方法;eg: gin as engine使用gin的代码生成器生成的代码如下
type render interface { Render(*gin.Context) }
type default interface { Bind(gin.Context, any) mir.Error Render(gin.Context, any, mir.Error) }
type Site interface { default
}
// RegisterSiteServant register Site servant to gin func RegisterSiteServant(e *gin.Engine, s Site, m ...SiteChain) { var cc SiteChain if len(m) > 0 { cc = m[0] } else { cc = &UnimplementedSiteChain{} } router := e // use chain for router middlewares := s.Chain() router.Use(middlewares...)
}