http.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package http
  2. import (
  3. "net/http"
  4. apiV1 "go-common/app/interface/live/app-interface/api/http/v1"
  5. apiV2 "go-common/app/interface/live/app-interface/api/http/v2"
  6. "go-common/app/interface/live/app-interface/conf"
  7. "go-common/app/interface/live/app-interface/dao"
  8. "go-common/app/interface/live/app-interface/service"
  9. v1index "go-common/app/interface/live/app-interface/service/v1"
  10. v1appConf "go-common/app/interface/live/app-interface/service/v1/app_conf"
  11. v2index "go-common/app/interface/live/app-interface/service/v2"
  12. "go-common/library/log"
  13. bm "go-common/library/net/http/blademaster"
  14. "go-common/library/net/http/blademaster/middleware/auth"
  15. "go-common/library/net/http/blademaster/middleware/verify"
  16. )
  17. var (
  18. srv *service.Service
  19. indexV2Srv *v2index.IndexService
  20. vfy *verify.Verify
  21. midAuth *auth.Auth
  22. )
  23. // Init init
  24. func Init(c *conf.Config) {
  25. srv = service.New(c)
  26. dao.InitAPI()
  27. initMiddleware(c)
  28. engine := bm.DefaultServer(c.BM)
  29. route(engine)
  30. if err := engine.Start(); err != nil {
  31. log.Error("bm Start error(%v)", err)
  32. panic(err)
  33. }
  34. }
  35. func initMiddleware(c *conf.Config) {
  36. vfy = verify.New(c.Verify)
  37. midAuth = auth.New(nil)
  38. }
  39. func route(e *bm.Engine) {
  40. e.Ping(ping)
  41. e.Register(register)
  42. // 上线后注释掉,方便调试代码
  43. e.GET("/test", test)
  44. g := e.Group("/x/app-interface")
  45. {
  46. g.GET("/start", vfy.Verify, howToStart)
  47. }
  48. midMap := map[string]bm.HandlerFunc{"auth": midAuth.User, "guest": midAuth.Guest, "verify": vfy.Verify}
  49. apiV1.RegisterV1IndexService(e, v1index.New(conf.Conf), midMap)
  50. apiV1.RegisterV1RelationService(e, v1index.NewRelationService(conf.Conf), midMap)
  51. //移动端获取配置通用接口
  52. apiV1.RegisterV1ConfigService(e, v1appConf.NewAppConfService(conf.Conf), midMap)
  53. // v2 首页
  54. indexV2Srv = v2index.NewIndexService(conf.Conf)
  55. apiV2.RegisterV2IndexService(e, indexV2Srv, midMap)
  56. }
  57. func ping(c *bm.Context) {
  58. if err := srv.Ping(c); err != nil {
  59. log.Error("ping error(%v)", err)
  60. c.AbortWithStatus(http.StatusServiceUnavailable)
  61. }
  62. // some frontend rely logic ping
  63. if indexV2Srv.GetAllModuleInfoMapFromCache(c) == nil {
  64. log.Error("ping error(AllMInfoMap must not nil)")
  65. c.AbortWithStatus(http.StatusServiceUnavailable)
  66. }
  67. }
  68. func test(c *bm.Context) {
  69. if err := srv.Test(c); err != nil {
  70. log.Error("test error(%v)", err)
  71. c.AbortWithStatus(http.StatusServiceUnavailable)
  72. }
  73. }
  74. func register(c *bm.Context) {
  75. c.JSON(map[string]interface{}{}, nil)
  76. }
  77. // example for http request handler
  78. func howToStart(c *bm.Context) {
  79. c.String(0, "Golang 大法好 !!!")
  80. }