ctxutil

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetClientIP

func GetClientIP(ctx context.Context) string

GetClientIP 获取客户端IP

func GetRequestID

func GetRequestID(ctx context.Context) string

GetRequestID 获取请求ID

func GetTraceID

func GetTraceID(ctx context.Context) string

GetTraceID 获取链路追踪ID

func GetUserAgent

func GetUserAgent(ctx context.Context) string

GetUserAgent 获取用户代理

func SetClientIP

func SetClientIP(ctx context.Context, ip string) context.Context

SetClientIP 设置客户端IP

func SetRequestContext

func SetRequestContext(ctx context.Context, reqCtx *RequestContext) context.Context

SetRequestContext 设置请求上下文结构体到 context

func SetRequestID

func SetRequestID(ctx context.Context, requestID string) context.Context

SetRequestID 设置请求ID

func SetTraceID

func SetTraceID(ctx context.Context, traceID string) context.Context

SetTraceID 设置链路追踪ID

func SetUserAgent

func SetUserAgent(ctx context.Context, userAgent string) context.Context

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 获取请求上下文结构体

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL