12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package server
- import (
- "github.com/gin-gonic/gin"
- )
- // 这里是定义一个接口,解决上述弊端的规范性
- type IController interface {
- // 这个传参就是脚手架主程
- Router(server *Server)
- }
- // 定义一个脚手架
- type Server struct {
- *gin.Engine
- // 路由分组一会儿会用到
- g *gin.RouterGroup
- }
- // 初始化函数
- func Init() *Server {
- // 作为Server的构造器
- s := &Server{Engine: gin.New()}
- // 返回作为链式调用
- return s
- }
- // 监听函数,更好的做法是这里的端口应该放到配置文件
- func (this *Server) Listen(addr string) {
- this.Run(addr)
- }
- // 这里是路由的关键代码,这里会挂载路由
- func (this *Server) Route(controllers ...IController) *Server {
- // 遍历所有的控制层,这里使用接口,就是为了将Router实例化
- for _, c := range controllers {
- c.Router(this)
- }
- return this
- }
- // 分组路由
- func (this *Server) GroupRouter(group string, controllers ...IController) *Server {
- this.g = this.Group(group)
- for _, c := range controllers {
- c.Router(this)
- }
- return this
- }
|