Skip to content

Commit a50b5c8

Browse files
committed
change response error with data logic
1 parent 871ab2d commit a50b5c8

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

api/gogen/default-logic.tpl

+24
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package logic
33
import (
44
"context"
55
"net/http"
6+
"encoding/json"
7+
"fmt"
68
"github.com/zeromicro/go-zero/core/logx"
79
{{.imports}}
810
)
@@ -13,6 +15,7 @@ type {{.logic}} struct {
1315
ctx context.Context
1416
reqCtx *http.Request
1517
respWriter *http.ResponseWriter
18+
NewErrorResponse func(code int, resp any) *ResponseDataError
1619
}
1720

1821
func New{{.logic}}(ctx context.Context, svcCtx *svc.ServiceContext, reqCtx *http.Request, respWriter *http.ResponseWriter) *{{.logic}} {
@@ -22,5 +25,26 @@ func New{{.logic}}(ctx context.Context, svcCtx *svc.ServiceContext, reqCtx *http
2225
ctx: ctx,
2326
reqCtx: reqCtx,
2427
respWriter: respWriter,
28+
NewErrorResponse: NewErrorResponse,
29+
}
30+
}
31+
32+
type ResponseDataError struct {
33+
Data any `json:"data"`
34+
Code int `json:"code"`
35+
}
36+
37+
func (e *ResponseDataError) Error() string {
38+
jsonStr, err := json.Marshal(e.Data)
39+
if err != nil {
40+
return fmt.Sprint(e.Data)
41+
}
42+
return string(jsonStr)
43+
}
44+
45+
func NewErrorResponse(code int, resp any) *ResponseDataError {
46+
return &ResponseDataError{
47+
Data: resp,
48+
Code: code,
2549
}
2650
}

api/gogen/handler.tpl

+6-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ func {{.HandlerName}}(svcCtx *svc.ServiceContext) http.HandlerFunc {
2020
{{end}}l := {{.LogicName}}.New{{.LogicType}}(r.Context(), svcCtx, r, &w)
2121
{{if .HasResp}}resp, {{end}}err := l.{{.Call}}({{if .HasRequest}}&req{{end}})
2222
if err != nil {
23-
l.Error(err)
24-
httpx.ErrorCtx(r.Context(), w, err)
23+
if respErr, ok := err.(*logic.ResponseDataError); ok {
24+
httpx.WriteJson(w, respErr.Code, respErr.Data)
25+
} else {
26+
l.Error(err)
27+
httpx.ErrorCtx(r.Context(), w, err)
28+
}
2529
} else {
2630
{{if .HasResp}}httpx.OkJsonCtx(r.Context(), w, resp){{else}}httpx.Ok(w){{end}}
2731
}

api/gogen/main.tpl

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"flag"
55
"fmt"
6+
"os"
67
"github.com/zeromicro/go-zero/core/logx"
78

89
{{.importPackages}}

0 commit comments

Comments
 (0)