| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package apis
- import (
- "app/apis/admin"
- "app/apis/asset"
- "app/apis/extend"
- "app/apis/magic"
- "app/apis/middleware"
- "app/apis/node"
- "app/apis/pub"
- "app/apis/redpacket"
- "app/apis/user"
- "app/commons/config"
- "app/commons/core"
- "app/commons/gin_engine"
- "fmt"
- "github.com/gin-gonic/gin"
- )
- // 服务启动
- // 所有服务组合到一起同时启动
- // 支持分开启动 减少api之间的耦合
- func RunHttp() {
- ginEngine := gin_engine.NewHttpEngine() // 创建Gin引擎
- // 接口默认前缀 api
- defaultRouterPrefix := "api/v1"
- if config.AppConf().RouterPrefix != "" {
- defaultRouterPrefix = config.AppConf().RouterPrefix
- }
- rootGroup := ginEngine.Group(defaultRouterPrefix) // 使用配置路由前缀
- // todo: 根据业务分离服务 启多服务 可减少接口耦合影响
- mountPubRouters(rootGroup) // 挂载公共路由 无必须jwt鉴权 以及回调
- // 以下为私有路由
- // user路由
- mountUserRouters(rootGroup)
- // asset路由
- mountAssetRouters(rootGroup)
- // ... biz路由
- mountNodeRouters(rootGroup)
- mountMagicRouters(rootGroup)
- // 挂载红包路由 -- Telegram红包
- mountRedPacketRouters(rootGroup)
- // 挂载扩展路由 -- 对外部系统
- mountExtendRouters(rootGroup)
- // 挂载管理路由 -- 对内部系统
- mountAdminRouters(rootGroup)
- //for _, item := range ginEngine.Routes() {
- // core.Log.Infof("METHOD | %s | PATH:%s ", item.Method, item.Path)
- //}
- address := fmt.Sprintf(":%d", config.AppConf().ApiAddr)
- core.Log.Infof("Http 开启监听端口: %s", address)
- core.Log.Infof("Gin run : %+v", ginEngine.Run(address))
- }
- // 挂载公共路由
- // jwt为可选
- func mountPubRouters(group *gin.RouterGroup) {
- g := group.Group("pub") // 公共路由
- g.Use(middleware.OptionalJwtMiddleware()) // 允许携带 不强制要求token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- gin_engine.RegisterRouter(g, pub.Router{}) // 注册公共路由
- }
- // 挂载私有路由
- // jwt为必填
- func mountUserRouters(group *gin.RouterGroup) {
- g := group.Group("user")
- g.Use(middleware.JwtMiddleware()) // 强制要求携带token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- g.Use(middleware.UserLogger()) // 启用日志记录
- gin_engine.RegisterRouter(g, user.Router{}) // 注册token路由
- }
- func mountAssetRouters(group *gin.RouterGroup) {
- g := group.Group("asset")
- g.Use(middleware.JwtMiddleware()) // 强制要求携带token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- g.Use(middleware.UserLogger()) // 启用日志记录
- gin_engine.RegisterRouter(g, asset.Router{}) // 注册token路由
- }
- // 业务服务路由- node
- func mountNodeRouters(group *gin.RouterGroup) {
- g := group.Group("node")
- g.Use(middleware.JwtMiddleware()) // 强制要求携带token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- g.Use(middleware.UserLogger()) // 启用日志记录
- gin_engine.RegisterRouter(g, node.Router{}) // 注册token路由
- }
- // 业务服务路由
- func mountMagicRouters(group *gin.RouterGroup) {
- g := group.Group("magic")
- g.Use(middleware.JwtMiddleware()) // 强制要求携带token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- g.Use(middleware.UserLogger()) // 启用日志记录
- gin_engine.RegisterRouter(g, magic.Router{}) // 注册token路由
- }
- // 红包服务路由
- func mountRedPacketRouters(group *gin.RouterGroup) {
- g := group.Group("redpacket")
- g.Use(middleware.JwtMiddleware()) // 强制要求携带token
- g.Use(middleware.I18n()) // 启用多语言 -- 自动写入i18n
- g.Use(middleware.UserLogger()) // 启用日志记录
- gin_engine.RegisterRouter(g, redpacket.Router{}) // 注册红包路由
- }
- // 挂载外部接口
- // 可使用其他中间件鉴权
- func mountExtendRouters(group *gin.RouterGroup) {
- g := group.Group("extend")
- gin_engine.RegisterRouter(g, extend.Router{})
- }
- // 挂载管理端接口
- // 使用 Keccak256Hash sign签名服务鉴权
- func mountAdminRouters(group *gin.RouterGroup) {
- g := group.Group("adi")
- g.Use(middleware.ExtendAuthWithName()) // 使用Keccak256Hash验证签名信息 指定该接口仅为管理系统服务
- //g.Use(middleware.IPWhitelist([]string{"127.0.0.1"})) // 限制IP白名单 -- 限制了前端的地址
- gin_engine.RegisterRouter(g, admin.Router{})
- }
|