Documentation
¶
Index ¶
- func GetClientIP(ctx context.Context) string
- func GetRequestID(ctx context.Context) string
- func GetTraceID(ctx context.Context) string
- func GetUserAgent(ctx context.Context) string
- func SetClientIP(ctx context.Context, ip string) context.Context
- func SetRequestContext(ctx context.Context, reqCtx *RequestContext) context.Context
- func SetRequestID(ctx context.Context, requestID string) context.Context
- func SetTraceID(ctx context.Context, traceID string) context.Context
- func SetUserAgent(ctx context.Context, userAgent string) context.Context
- func WithTimeout(ctx context.Context, defaultTimeout time.Duration) (context.Context, context.CancelFunc)
- type ContextKey
- type RequestContext
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetClientIP ¶
SetClientIP 设置客户端IP
func SetRequestContext ¶
func SetRequestContext(ctx context.Context, reqCtx *RequestContext) context.Context
SetRequestContext 设置请求上下文结构体到 context
func SetRequestID ¶
SetRequestID 设置请求ID
func SetTraceID ¶
SetTraceID 设置链路追踪ID
func SetUserAgent ¶
SetUserAgent 设置用户代理
func WithTimeout ¶
func WithTimeout(ctx context.Context, defaultTimeout time.Duration) (context.Context, context.CancelFunc)
WithTimeout 包装 context.WithTimeout,添加默认超时
Types ¶
type ContextKey ¶
type ContextKey string
ContextKey 自定义context key类型,避免key冲突
const ( // KeyRequestID 请求ID KeyRequestID ContextKey = "request_id" // KeyTraceID 链路追踪ID KeyTraceID ContextKey = "trace_id" // KeyClientIP 客户端IP KeyClientIP ContextKey = "client_ip" // KeyUserAgent 用户代理 KeyUserAgent ContextKey = "user_agent" // KeyRequestContext 请求上下文结构体 KeyRequestContext ContextKey = "request_context" )
type RequestContext ¶
type RequestContext struct {
RequestID string // 请求ID
TraceID string // 链路追踪ID
ClientIP string // 客户端IP
UserAgent string // 用户代理
Country string // 国家
City string // 城市
Location string // 完整位置
IsInternal bool // 是否为内网IP
RequestTime time.Time // 请求时间
}
RequestContext 请求上下文结构体,封装请求相关的所有信息
func BuildRequestContext ¶
func BuildRequestContext(ctx context.Context) *RequestContext
BuildRequestContext 从标准库 context 构建请求上下文
func BuildRequestContextFromGin ¶
func BuildRequestContextFromGin(c *gin.Context) *RequestContext
BuildRequestContextFromGin 从 gin.Context 构建请求上下文
func GetRequestContext ¶
func GetRequestContext(ctx context.Context) *RequestContext
GetRequestContext 从 context 获取请求上下文结构体
Click to show internal directories.
Click to hide internal directories.