server.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package server
  2. import (
  3. "github.com/gin-gonic/gin"
  4. )
  5. // 这里是定义一个接口,解决上述弊端的规范性
  6. type IController interface {
  7. // 这个传参就是脚手架主程
  8. Router(server *Server)
  9. }
  10. // 定义一个脚手架
  11. type Server struct {
  12. *gin.Engine
  13. // 路由分组一会儿会用到
  14. g *gin.RouterGroup
  15. }
  16. // 初始化函数
  17. func Init() *Server {
  18. // 作为Server的构造器
  19. s := &Server{Engine: gin.New()}
  20. // 返回作为链式调用
  21. return s
  22. }
  23. // 监听函数,更好的做法是这里的端口应该放到配置文件
  24. func (this *Server) Listen(addr string) {
  25. this.Run(addr)
  26. }
  27. // 这里是路由的关键代码,这里会挂载路由
  28. func (this *Server) Route(controllers ...IController) *Server {
  29. // 遍历所有的控制层,这里使用接口,就是为了将Router实例化
  30. for _, c := range controllers {
  31. c.Router(this)
  32. }
  33. return this
  34. }
  35. // 分组路由
  36. func (this *Server) GroupRouter(group string, controllers ...IController) *Server {
  37. this.g = this.Group(group)
  38. for _, c := range controllers {
  39. c.Router(this)
  40. }
  41. return this
  42. }