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路由注册完成")
|
|
|
|
|
|
}
|