ProjectWIND/core/web_service.go

47 lines
1.4 KiB
Go

package core
import (
"ProjectWIND/LOG"
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/hlog"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
func WebServer(port string) *server.Hertz {
// 创建自定义日志记录器实例
customLogger := &LOG.CustomLogger{}
// 设置自定义日志记录器
hlog.SetLogger(customLogger)
h := server.Default(server.WithHostPorts("0.0.0.0:" + port))
h.Use(LoggingMiddleware())
h.GET("/index", func(ctx context.Context, c *app.RequestContext) {
//返回webui/index.html
c.File("./webui/index.html")
})
h.GET("/app/api/:appName/*action", func(ctx context.Context, c *app.RequestContext) {
appName := c.Param("appName")
action := c.Param("action")
message := appName + "-" + action + "\n"
c.String(consts.StatusOK, message)
})
return h
}
// LoggingMiddleware 是一个中间件函数,用于记录请求信息
func LoggingMiddleware() app.HandlerFunc {
return func(c context.Context, ctx *app.RequestContext) {
// 获取客户端 IP
clientIP := ctx.ClientIP()
// 获取请求完整路径
fullPath := ctx.Request.URI().PathOriginal()
// 继续处理请求
ctx.Next(c)
// 获取请求处理状态码
statusCode := ctx.Response.StatusCode()
// 在请求处理后记录结束信息
hlog.Debugf("收到网络请求 | IP: %s | Path: %s | Status: %d ", clientIP, fullPath, statusCode)
}
}