139 lines
3.3 KiB
Go
139 lines
3.3 KiB
Go
package routers
|
|
|
|
import (
|
|
"beacon/config"
|
|
_ "beacon/docs"
|
|
"beacon/middleware"
|
|
"beacon/pkg/logger"
|
|
"beacon/routers/handlers"
|
|
"github.com/gin-gonic/gin"
|
|
swaggerFiles "github.com/swaggo/files"
|
|
ginSwagger "github.com/swaggo/gin-swagger"
|
|
)
|
|
|
|
func Init() *gin.Engine {
|
|
// 基于获取引擎对象(路由对象)
|
|
r := gin.New()
|
|
r.Use(middleware.GinLogger(logger.Lg))
|
|
r.Use(middleware.GinRecovery(logger.Lg, false))
|
|
//r.Use(middleware.AntiCrawlingStrategy()) // 反爬虫策略
|
|
r.Use(middleware.CSRFMiddleware)
|
|
//r.Use(middleware.JwtAuthMiddleware()) // 用户认证
|
|
|
|
// 设置自定义 404 页面
|
|
r.NoRoute(func(c *gin.Context) {
|
|
// 您可以使用 HTML 模板文件
|
|
//c.HTML(404, "404.html", gin.H{
|
|
// "title": "Page Not Found",
|
|
//})
|
|
|
|
// 或者,您可以直接返回 HTML 代码
|
|
c.Data(404, "text/html", []byte(`<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>404 Not Found</title>
|
|
<style>
|
|
body {
|
|
font-family: sans-serif;
|
|
margin: 0;
|
|
padding: 0;
|
|
background-color: #f5f5f5;
|
|
}
|
|
|
|
.container {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
text-align: center;
|
|
height: 100vh;
|
|
}
|
|
|
|
.content {
|
|
max-width: 600px;
|
|
padding: 30px;
|
|
background-color: #fff;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 36px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
p {
|
|
font-size: 18px;
|
|
line-height: 1.5em;
|
|
}
|
|
|
|
a {
|
|
color: #000;
|
|
text-decoration: none;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="content">
|
|
<h1>404</h1>
|
|
<h2>Page Not Found</h2>
|
|
<p>The page you are looking for does not exist or has been moved.</p>
|
|
<p>You can <a href="/">go back to the homepage</a> or <a href="mailto:support@example.com">contact us</a> if you need assistance.</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
`))
|
|
})
|
|
|
|
// 路由分组
|
|
v1 := r.Group(config.Conf.Version)
|
|
SetupCompositeCaseRoutes(v1)
|
|
SetupWorkflowRoutes(v1)
|
|
SetupTestRoutes(v1)
|
|
|
|
// 添加 Swagger 中间件
|
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
|
|
|
return r
|
|
}
|
|
|
|
func SetupCompositeCaseRoutes(group *gin.RouterGroup) {
|
|
// 初始化服务和处理器
|
|
//var handler *handlers.CompositeCaseHandler
|
|
handler := *handlers.NewCompositeCaseHandler()
|
|
|
|
api := group.Group("/api")
|
|
{
|
|
// 复合案例相关路由
|
|
api.POST("/composite-cases", handler.CreateCompositeCase)
|
|
api.GET("/composite-cases", handler.ListCompositeCases)
|
|
api.GET("/composite-cases/:id", handler.GetCompositeCase)
|
|
api.PUT("/composite-cases/:id", handler.UpdateCompositeCase)
|
|
api.DELETE("/composite-cases/:id", handler.DeleteCompositeCase)
|
|
}
|
|
}
|
|
|
|
func SetupWorkflowRoutes(group *gin.RouterGroup) {
|
|
// 初始化服务和处理器
|
|
handler := *handlers.NewWorkflowHandler()
|
|
|
|
api := group.Group("/api")
|
|
{
|
|
// 工作流相关路由
|
|
api.POST("/workflows/start", handler.StartWorkflow)
|
|
api.GET("/workflows/:id", handler.GetWorkflowStatus)
|
|
api.GET("/workflows/:id/results", handler.GetWorkflowResults)
|
|
}
|
|
}
|
|
|
|
func SetupTestRoutes(group *gin.RouterGroup) {
|
|
// 测试相关路由
|
|
testHandler := handlers.NewTestHandler()
|
|
api := group.Group("/api")
|
|
{
|
|
api.POST("/test/test-endpoint", testHandler.TestEndpoint)
|
|
api.POST("/test/core-transfer", testHandler.CoreTransferEndpoint)
|
|
}
|
|
}
|