router.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package http
  2. import (
  3. "cicv-data-closedloop/amd64/web_server/src/infrastructure/config"
  4. "cicv-data-closedloop/amd64/web_server/src/interfaces/api"
  5. "cicv-data-closedloop/common/config/c_log"
  6. "cicv-data-closedloop/common/gin/middleware"
  7. "github.com/gin-gonic/gin"
  8. "os"
  9. )
  10. func CreateServer() {
  11. // 创建 gin 实例
  12. router := gin.Default()
  13. // 使用中间件
  14. router.Use(middleware.Cors()) // 解决cors
  15. router.Use(middleware.LogRequest()) // 请求日志打印
  16. router.Use(middleware.ValidateHeaders(config.ApplicationYaml.Web.WhiteList, config.ApplicationYaml.Web.Token)) // 全局请求头校验
  17. // 通过路由组设置全局前缀
  18. webPrefix := router.Group(config.ApplicationYaml.Web.RoutePrefix)
  19. {
  20. examPrefix := webPrefix.Group("/exam")
  21. {
  22. examPrefix.POST("/tick", api.Tick) // 考试开始
  23. go api.ExamEndTicker() // 考试结束
  24. examPrefix.POST("/display", api.Display) // 云控展示线上评分
  25. examPrefix.POST("/page", api.Page) // 分页查询
  26. examPrefix.POST("/report", api.Report) // pdf下载
  27. examPrefix.POST("/offline", api.Offline) // 录入线下成绩
  28. }
  29. }
  30. {
  31. monitorPrefix := webPrefix.Group("/monitor")
  32. {
  33. monitorPrefix.POST("/insert", api.SaveDeviceMonitor)
  34. }
  35. }
  36. {
  37. collectLimitPrefix := webPrefix.Group("/collect_limit")
  38. {
  39. collectLimitPrefix.POST("/can_collect", api.TriggerCollect)
  40. collectLimitPrefix.POST("/plus_collect_num", api.CanCollectPlus)
  41. }
  42. }
  43. // 端口
  44. err := router.Run(":" + config.ApplicationYaml.Web.Port)
  45. if err != nil {
  46. c_log.GlobalLogger.Error("程序崩溃,监听端口 "+config.ApplicationYaml.Web.Port+" 失败:", err)
  47. os.Exit(-1)
  48. }
  49. }