route.go 1021 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Package bootstrap 处理程序初始化逻辑
  2. package bootstrap
  3. import (
  4. "net/http"
  5. "strings"
  6. "github.com/gin-gonic/gin"
  7. "github.com/runningwater/gohub/app/http/middlewares"
  8. "github.com/runningwater/gohub/routes"
  9. )
  10. // SetupRoute 路由初始化
  11. func SetupRoute(router *gin.Engine) {
  12. // 注册全局中间件
  13. registerGlobalMiddleWare(router)
  14. // 注册 API 路由
  15. routes.RegisterAPIRoutes(router)
  16. // 配置 404 路由
  17. setup404Handler(router)
  18. }
  19. func setup404Handler(router *gin.Engine) {
  20. router.NoRoute(func(c *gin.Context) {
  21. // 获取标头信息的 Accept 字段
  22. acceptString := c.Request.Header.Get("Accept")
  23. if strings.Contains(acceptString, "text/html") {
  24. c.String(http.StatusNotFound, "页面返回 404, Not Found")
  25. } else {
  26. // 默认返回 JSON
  27. c.JSON(http.StatusNotFound, gin.H{
  28. "error_code": 404,
  29. "error_message": "404 Not Found",
  30. })
  31. }
  32. })
  33. }
  34. func registerGlobalMiddleWare(router *gin.Engine) {
  35. router.Use(
  36. middlewares.Logger(),
  37. middlewares.Recovery(),
  38. )
  39. }