Files
tyapi-server/internal/infrastructure/http/routes/api_routes.go

69 lines
2.2 KiB
Go
Raw Normal View History

2025-07-28 01:46:39 +08:00
package routes
import (
"tyapi-server/internal/infrastructure/http/handlers"
sharedhttp "tyapi-server/internal/shared/http"
"tyapi-server/internal/shared/middleware"
"go.uber.org/zap"
)
// ApiRoutes API路由注册器
type ApiRoutes struct {
2025-08-27 22:19:19 +08:00
apiHandler *handlers.ApiHandler
authMiddleware *middleware.JWTAuthMiddleware
2025-07-28 01:46:39 +08:00
domainAuthMiddleware *middleware.DomainAuthMiddleware
2025-08-27 22:19:19 +08:00
logger *zap.Logger
2025-07-28 01:46:39 +08:00
}
// NewApiRoutes 创建API路由注册器
func NewApiRoutes(
apiHandler *handlers.ApiHandler,
authMiddleware *middleware.JWTAuthMiddleware,
domainAuthMiddleware *middleware.DomainAuthMiddleware,
logger *zap.Logger,
) *ApiRoutes {
return &ApiRoutes{
2025-08-27 22:19:19 +08:00
apiHandler: apiHandler,
authMiddleware: authMiddleware,
2025-07-28 01:46:39 +08:00
domainAuthMiddleware: domainAuthMiddleware,
2025-08-27 22:19:19 +08:00
logger: logger,
2025-07-28 01:46:39 +08:00
}
}
// Register 注册相关路由
func (r *ApiRoutes) Register(router *sharedhttp.GinRouter) {
// API路由组需要用户认证
engine := router.GetEngine()
apiGroup := engine.Group("/api/v1")
{
apiGroup.POST("/:api_name", r.domainAuthMiddleware.Handle(""), r.apiHandler.HandleApiCall)
2025-08-28 17:09:21 +08:00
// Console专用接口 - 使用JWT认证不需要域名认证
apiGroup.POST("/console/:api_name", r.authMiddleware.Handle(), r.apiHandler.HandleApiCall)
2025-08-27 22:19:19 +08:00
// 表单配置接口(用于前端动态生成表单)
apiGroup.GET("/form-config/:api_code", r.authMiddleware.Handle(), r.apiHandler.GetFormConfig)
2025-07-28 01:46:39 +08:00
// 加密接口(用于前端调试)
apiGroup.POST("/encrypt", r.authMiddleware.Handle(), r.apiHandler.EncryptParams)
2025-08-18 14:13:16 +08:00
// 解密接口(用于前端调试)
apiGroup.POST("/decrypt", r.authMiddleware.Handle(), r.apiHandler.DecryptParams)
2025-07-28 01:46:39 +08:00
// API密钥管理接口
apiGroup.GET("/api-keys", r.authMiddleware.Handle(), r.apiHandler.GetUserApiKeys)
// 白名单管理接口
apiGroup.GET("/white-list", r.authMiddleware.Handle(), r.apiHandler.GetUserWhiteList)
apiGroup.POST("/white-list", r.authMiddleware.Handle(), r.apiHandler.AddWhiteListIP)
apiGroup.DELETE("/white-list/:ip", r.authMiddleware.Handle(), r.apiHandler.DeleteWhiteListIP)
// API调用记录接口
apiGroup.GET("/my/api-calls", r.authMiddleware.Handle(), r.apiHandler.GetUserApiCalls)
}
r.logger.Info("API路由注册完成")
}