update: 整理项目结构 重写中间件 提高复用性

This commit is contained in:
2025-09-26 12:29:57 +08:00
parent 5daf6df318
commit d15352a18b
9 changed files with 430 additions and 324 deletions

View File

@@ -0,0 +1,32 @@
package middleware
import (
"fmt"
"sync/atomic"
"github.com/gin-gonic/gin"
)
const RequestIDKey = "reqID"
var globalReqID atomic.Int64
// RequestID 生成自增的请求 ID 并注入上下文及响应头
func RequestID() gin.HandlerFunc {
return func(c *gin.Context) {
id := globalReqID.Add(1)
c.Set(RequestIDKey, id)
c.Writer.Header().Set("X-Request-ID", fmt.Sprintf("%d", id))
c.Next()
}
}
// GetReqID 从上下文中获取请求 ID
func GetReqID(c *gin.Context) int64 {
if v, ok := c.Get(RequestIDKey); ok {
if id, ok2 := v.(int64); ok2 {
return id
}
}
return 0
}