提交最新的gateway 支持通用的response map返回
This commit is contained in:
@@ -21,10 +21,5 @@ func AutoRegisterHandler(ctx context.Context, mux *runtime.ServeMux, opts ...grp
|
||||
return err
|
||||
}
|
||||
|
||||
err = service.RegisterInfoHandlerClientNacos(ctx, mux, opts...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"fusen-basic/basic"
|
||||
"fusen-gateway/gen/go/service"
|
||||
"net/http"
|
||||
"regexp"
|
||||
|
||||
@@ -21,7 +22,16 @@ func (m *EmptyMarshaler) Marshal(v interface{}) ([]byte, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var fsProtoJSON = &runtime.JSONPb{
|
||||
var fsDefaultProtoJSON = &runtime.JSONPb{
|
||||
MarshalOptions: protojson.MarshalOptions{
|
||||
EmitUnpopulated: true,
|
||||
},
|
||||
UnmarshalOptions: protojson.UnmarshalOptions{
|
||||
DiscardUnknown: true,
|
||||
},
|
||||
}
|
||||
|
||||
var fsProtoDataJSON = &runtime.JSONPb{
|
||||
MarshalOptions: protojson.MarshalOptions{
|
||||
EmitUnpopulated: true,
|
||||
},
|
||||
@@ -35,10 +45,21 @@ var codeRE = regexp.MustCompile(`(?i)"code"\s*:\s*(\d+)`)
|
||||
func WriteFusenResponse(fsHeader string, w http.ResponseWriter, resp proto.Message) error {
|
||||
w.WriteHeader(200)
|
||||
var buf = bytes.NewBufferString(fsHeader[:len(fsHeader)-1] + ",")
|
||||
rdata, err := fsProtoJSON.Marshal(resp)
|
||||
if err != nil {
|
||||
return err
|
||||
var rdata []byte
|
||||
var err error
|
||||
|
||||
if customResp, ok := resp.(*service.Response); ok {
|
||||
rdata, err = protojson.Marshal(customResp.GetData())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
rdata, err = protojson.Marshal(resp)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
buf.WriteString(`"data":`)
|
||||
buf.Write(rdata)
|
||||
buf.WriteString(`}`)
|
||||
|
||||
Reference in New Issue
Block a user