代码拉取完成,页面将自动刷新
package middleware
import (
"context"
"gitee.com/jianguosun_admin/common_pkg/krand"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
const (
// ContextRequestIDKey context request id for context
ContextRequestIDKey = "request_id"
// HeaderXRequestIDKey http header request id key
HeaderXRequestIDKey = "X-Request-ID"
)
// CtxKeyString for context.WithValue key type
type CtxKeyString string
// RequestIDKey "request_id"
var RequestIDKey = CtxKeyString(ContextRequestIDKey)
// RequestID is an interceptor that injects a 'X-Request-ID' into the context and request/response header of each request.
func RequestID() gin.HandlerFunc {
return func(c *gin.Context) {
// Check for incoming header, use it if exists
requestID := c.Request.Header.Get(HeaderXRequestIDKey)
// Create request id
if requestID == "" {
requestID = krand.String(krand.R_All, 10)
c.Request.Header.Set(HeaderXRequestIDKey, requestID)
// Expose it for use in the application
c.Set(ContextRequestIDKey, requestID)
}
// Set X-Request-ID header
c.Writer.Header().Set(HeaderXRequestIDKey, requestID)
c.Next()
}
}
// GCtxRequestID get request id from gin.Context
func GCtxRequestID(c *gin.Context) string {
if v, isExist := c.Get(ContextRequestIDKey); isExist {
if requestID, ok := v.(string); ok {
return requestID
}
}
return ""
}
// GCtxRequestIDField get request id field from gin.Context
func GCtxRequestIDField(c *gin.Context) zap.Field {
return zap.String(ContextRequestIDKey, GCtxRequestID(c))
}
// CtxRequestID get request id from context.Context
func CtxRequestID(ctx context.Context) string {
v := ctx.Value(ContextRequestIDKey)
if str, ok := v.(string); ok {
return str
}
return ""
}
// CtxRequestIDField get request id field from context.Context
func CtxRequestIDField(ctx context.Context) zap.Field {
return zap.String(ContextRequestIDKey, CtxRequestID(ctx))
}
// HeaderRequestID get request id from the header
func HeaderRequestID(c *gin.Context) string {
return c.Request.Header.Get(HeaderXRequestIDKey)
}
// HeaderRequestIDField get request id field from header
func HeaderRequestIDField(c *gin.Context) zap.Field {
return zap.String(HeaderXRequestIDKey, HeaderRequestID(c))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。