httpserver.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package router
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "go.uber.org/zap"
  5. "log"
  6. "os"
  7. "path/filepath"
  8. "sfbase/core"
  9. "sfbase/global"
  10. "strings"
  11. )
  12. type server interface {
  13. ListenAndServe() error
  14. }
  15. func HttpServerRun() {
  16. r := InitRouter()
  17. if global.BaseConfig.HttpConfig.ServerPageRouter {
  18. /**
  19. -----注册后端页面路由,该段逻辑可放置在前端处理-----
  20. */
  21. pageRouterRegister(r)
  22. initViews(r)
  23. /*------------------------------------*/
  24. }
  25. //通过公共方法获取配置文件属性 不用定义结构体的方法
  26. address := core.GetStringConf("base.http.http_port")
  27. readTimeOut := core.GetIntConf("base.http.read_timeout")
  28. writeTimeOut := core.GetIntConf("base.http.write_timeout")
  29. //
  30. s := initServer(address, readTimeOut, writeTimeOut, r)
  31. if err := s.ListenAndServe(); err != nil {
  32. global.Logger.Error("sf_base web 服务启动失败", zap.Any("error:", err))
  33. }
  34. }
  35. func initViews(router *gin.Engine) {
  36. router.Static(core.GetStringConf("base.http.static_prefix"), core.GetStringConf("base.http.static_root"))
  37. //router.StaticFile("/favicon", config.SysConfig.App.Favicon)
  38. templateDir := core.GetStringConf("base.http.template_dir")
  39. if templateDir != "" {
  40. templateFiles := loadAllTemplates(templateDir)
  41. if len(templateFiles) > 0 {
  42. router.LoadHTMLFiles(templateFiles...)
  43. }
  44. router.Delims("{{", "}}")
  45. }
  46. }
  47. func loadAllTemplates(dir string) []string {
  48. templateFiles := make([]string, 0)
  49. filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
  50. if strings.HasSuffix(info.Name(), ".html") {
  51. log.Println("加载模板文件", path)
  52. if _, err := os.Stat(path); err != nil {
  53. log.Println(path, err.Error())
  54. }
  55. templateFiles = append(templateFiles, path)
  56. }
  57. return nil
  58. })
  59. return templateFiles
  60. }