feat: 添加微服务模板基础架构

- 创建基于 CloudWego Hertz 的 Go 微服务脚手架
- 集成 Nacos 服务注册/发现功能
- 添加 gRPC 客户端支持
- 实现环境变量配置管理 (.env.example)
- 添加 HTTP 中间件 (Recovery, AccessLog, CORS)
- 配置 Gitea CI/CD 构建部署流程

BREAKING CHANGE: 项目结构调整,从简单的 API 服务升级为完整的微服务架构
This commit is contained in:
shiran
2026-04-15 11:13:38 +08:00
parent 8654cd6e5c
commit 6050d11f27
30 changed files with 1643 additions and 358 deletions
+27
View File
@@ -0,0 +1,27 @@
package middleware
import (
"apiServer_service/utils/logger"
"context"
"fmt"
"time"
"github.com/cloudwego/hertz/pkg/app"
)
func AccessLog() app.HandlerFunc {
return func(ctx context.Context, c *app.RequestContext) {
start := time.Now()
c.Next(ctx)
latency := time.Since(start)
logger.Info("HTTP",
fmt.Sprintf("%s %s %d %s",
string(c.Method()),
string(c.Request.URI().Path()),
c.Response.StatusCode(),
latency,
),
)
}
}
+23
View File
@@ -0,0 +1,23 @@
package middleware
import (
"context"
"net/http"
"github.com/cloudwego/hertz/pkg/app"
)
func CORS() app.HandlerFunc {
return func(ctx context.Context, c *app.RequestContext) {
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
c.Header("Access-Control-Allow-Headers", "Origin, Content-Type, Authorization")
c.Header("Access-Control-Max-Age", "86400")
if string(c.Method()) == http.MethodOptions {
c.AbortWithStatus(http.StatusNoContent)
return
}
c.Next(ctx)
}
}
+24
View File
@@ -0,0 +1,24 @@
package middleware
import (
"apiServer_service/utils/logger"
"apiServer_service/utils/request"
"context"
"fmt"
"runtime/debug"
"github.com/cloudwego/hertz/pkg/app"
)
func Recovery() app.HandlerFunc {
return func(ctx context.Context, c *app.RequestContext) {
defer func() {
if r := recover(); r != nil {
logger.Error("Panic Recovery", fmt.Sprintf("%v\n%s", r, debug.Stack()))
request.Error(c, 500, "Internal Server Error")
c.Abort()
}
}()
c.Next(ctx)
}
}