优化默认返回码
This commit is contained in:
@@ -4,7 +4,7 @@ go 1.20
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gin-gonic/gin v1.9.1
|
github.com/gin-gonic/gin v1.9.1
|
||||||
github.com/yuninks/langx v0.0.1
|
github.com/yuninks/langx v0.0.3
|
||||||
github.com/zeromicro/go-zero v1.6.4
|
github.com/zeromicro/go-zero v1.6.4
|
||||||
gorm.io/gorm v1.25.9
|
gorm.io/gorm v1.25.9
|
||||||
)
|
)
|
||||||
@@ -58,6 +58,5 @@ require (
|
|||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
|
||||||
google.golang.org/grpc v1.63.0 // indirect
|
google.golang.org/grpc v1.63.0 // indirect
|
||||||
google.golang.org/protobuf v1.33.0 // indirect
|
google.golang.org/protobuf v1.33.0 // indirect
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG
|
|||||||
github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
|
github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
|
||||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||||
@@ -88,8 +87,8 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS
|
|||||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
|
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
|
||||||
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||||
github.com/yuninks/langx v0.0.1 h1:Ee4vXAVcyXSCms0qtEd/jANYlKO7IIGVTD5NOLdpCJo=
|
github.com/yuninks/langx v0.0.3 h1:f+k3x8yz85Sx3LfmmACq7qilInuXxJjCi2wdAhj8E3Q=
|
||||||
github.com/yuninks/langx v0.0.1/go.mod h1:nAylzjNIjCThhEQSJsIKP8Vhja0aJlcyig+NsNPZLSk=
|
github.com/yuninks/langx v0.0.3/go.mod h1:nAylzjNIjCThhEQSJsIKP8Vhja0aJlcyig+NsNPZLSk=
|
||||||
github.com/zeromicro/go-zero v1.6.4 h1:GvZXxxwl1Lby/gIHxHwN/ZNmXl1WFJa1DvoVgqgttUs=
|
github.com/zeromicro/go-zero v1.6.4 h1:GvZXxxwl1Lby/gIHxHwN/ZNmXl1WFJa1DvoVgqgttUs=
|
||||||
github.com/zeromicro/go-zero v1.6.4/go.mod h1:dQ39Zoz20/6x/SUhFXyEEg8lWjl+CO3dzg8Je2xG63Q=
|
github.com/zeromicro/go-zero v1.6.4/go.mod h1:dQ39Zoz20/6x/SUhFXyEEg8lWjl+CO3dzg8Je2xG63Q=
|
||||||
go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs=
|
go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs=
|
||||||
@@ -142,12 +141,9 @@ google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGm
|
|||||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gorm.io/gorm v1.25.9 h1:wct0gxZIELDk8+ZqF/MVnHLkA1rvYlBWUMv2EdsK1g8=
|
gorm.io/gorm v1.25.9 h1:wct0gxZIELDk8+ZqF/MVnHLkA1rvYlBWUMv2EdsK1g8=
|
||||||
gorm.io/gorm v1.25.9/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
|
gorm.io/gorm v1.25.9/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
|
||||||
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
|
|
||||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||||
|
|||||||
+23
-5
@@ -6,9 +6,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type options struct {
|
type options struct {
|
||||||
logger Logger
|
logger Logger
|
||||||
ignoreLog bool
|
ignoreLog bool
|
||||||
traceId string
|
traceId string
|
||||||
|
defaultSuccessCode int
|
||||||
|
defaultErrorCode int
|
||||||
}
|
}
|
||||||
|
|
||||||
var op *options = nil
|
var op *options = nil
|
||||||
@@ -25,12 +27,28 @@ func InitOptions(ops ...Option) {
|
|||||||
|
|
||||||
func defaultOptions() *options {
|
func defaultOptions() *options {
|
||||||
return &options{
|
return &options{
|
||||||
logger: &defaultLogger{},
|
logger: &defaultLogger{},
|
||||||
|
defaultSuccessCode: 200,
|
||||||
|
defaultErrorCode: 400,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type Option func(*options)
|
type Option func(*options)
|
||||||
|
|
||||||
|
// 设置默认的成功code
|
||||||
|
func SetDefaultSuccessCode(code int) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.defaultSuccessCode = code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置默认的失败code
|
||||||
|
func SetDefaultErrorCode(code int) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.defaultErrorCode = code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 是否需要打印日志
|
// 是否需要打印日志
|
||||||
func SetIgnoreLog() Option {
|
func SetIgnoreLog() Option {
|
||||||
return func(o *options) {
|
return func(o *options) {
|
||||||
@@ -45,7 +63,7 @@ func SetLogger(logger Logger) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否需要响应trace_id
|
// 是否需要响应trace_id,&ctx里面的字段
|
||||||
func SetTraceId(traceId string) Option {
|
func SetTraceId(traceId string) Option {
|
||||||
return func(o *options) {
|
return func(o *options) {
|
||||||
o.traceId = traceId
|
o.traceId = traceId
|
||||||
|
|||||||
+12
-6
@@ -56,29 +56,35 @@ func FormatMessage(ctx context.Context, w http.ResponseWriter, message string, f
|
|||||||
|
|
||||||
// 成功的响应
|
// 成功的响应
|
||||||
func Success(ctx context.Context, w http.ResponseWriter, data interface{}, info ...interface{}) {
|
func Success(ctx context.Context, w http.ResponseWriter, data interface{}, info ...interface{}) {
|
||||||
ResponseCtx(ctx, w, 200, "请求成功", data, info)
|
ResponseCtx(ctx, w, op.defaultSuccessCode, "请求成功", data, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
func SuccessWithPage(ctx context.Context, w http.ResponseWriter, data interface{}, page pagination) {
|
func SuccessWithPage(ctx context.Context, w http.ResponseWriter, data interface{}, page pagination) {
|
||||||
ResponseCtx(ctx, w, 200, "请求成功", data, page)
|
ResponseCtx(ctx, w, op.defaultSuccessCode, "请求成功", data, page)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 失败的响应
|
// 失败的响应
|
||||||
func Error(ctx context.Context, w http.ResponseWriter, err error) {
|
func Error(ctx context.Context, w http.ResponseWriter, err error) {
|
||||||
code := 400
|
code := op.defaultErrorCode
|
||||||
msg := "请求失败"
|
msg := "请求失败"
|
||||||
if err != nil {
|
if err != nil {
|
||||||
val, ok := err.(*langx.LangError)
|
val, ok := err.(*langx.LangError)
|
||||||
if ok {
|
if ok {
|
||||||
code = val.Code()
|
if langx.GetDefaultCode() != val.Code() {
|
||||||
msg = err.Error()
|
code = val.Code()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
msg = err.Error()
|
||||||
}
|
}
|
||||||
ResponseCtx(ctx, w, code, msg, "")
|
ResponseCtx(ctx, w, code, msg, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func ErrorStr(ctx context.Context, w http.ResponseWriter, msg string) {
|
func ErrorStr(ctx context.Context, w http.ResponseWriter, msg string) {
|
||||||
code, msg := langx.GetTrans("zh-CN", msg, nil)
|
msg = langx.GetMsgCtx(ctx, msg)
|
||||||
|
code := langx.GetCode(msg)
|
||||||
|
if code == langx.GetDefaultCode() {
|
||||||
|
code = op.defaultErrorCode
|
||||||
|
}
|
||||||
ResponseCtx(ctx, w, code, msg, "")
|
ResponseCtx(ctx, w, code, msg, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user