优化方法的使用

This commit is contained in:
yun
2026-09-19 01:31:34 +08:00
parent 00eba5cc75
commit 407fc49e0c
20 changed files with 1710 additions and 376 deletions
+43 -11
View File
@@ -6,11 +6,15 @@ import (
)
type options struct {
logger Logger
ignoreLog bool
traceId string
defaultSuccessCode int
defaultErrorCode int
logger Logger
ignoreLog bool
traceFunc func(ctx context.Context) string
defaultSuccessCode int
defaultErrorCode int
defaultSuccessMessage string
successMsgSet bool
code int
data any
@@ -34,9 +38,20 @@ func InitOptions(ops ...Option) {
func defaultOptions() *options {
return &options{
logger: &defaultLogger{},
defaultSuccessCode: 200,
defaultErrorCode: 400,
logger: &defaultLogger{},
traceFunc: func(ctx context.Context) string {
val := ctx.Value("trace_id")
v, ok := val.(string)
if ok {
return v
}
return ""
},
defaultSuccessCode: 200,
defaultErrorCode: 400,
defaultSuccessMessage: "请求成功",
code: 200,
data: nil, // 默认为nil
@@ -77,6 +92,15 @@ func SetDefaultSuccessCode(code int) Option {
}
}
// 设置默认的成功文案(多语言场景见 SuccessMessageCtx)
// 传回内置默认文案 "请求成功" 即恢复为"未显式配置",交还给多语言解析
func SetDefaultSuccessMessage(message string) Option {
return func(o *options) {
o.defaultSuccessMessage = message
o.successMsgSet = message != defaultSuccessMessage
}
}
// 设置默认的失败code
func SetDefaultErrorCode(code int) Option {
return func(o *options) {
@@ -98,10 +122,18 @@ func SetLogger(logger Logger) Option {
}
}
// 是否需要响应trace_id,&ctx里面的字段
func SetTraceId(traceId string) Option {
func SetTraceFunc(f func(ctx context.Context) string) Option {
return func(o *options) {
o.traceId = traceId
o.traceFunc = f
}
}
// 设置trace_id的ctx key(默认已用标准key CtxTraceIDKey,一般无需调用)
func SetTraceKey(traceKey any) Option {
return func(o *options) {
o.traceFunc = func(ctx context.Context) string {
return ctx.Value(traceKey).(string)
}
}
}