亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解壓 golang 中的 grpc status.details 錯誤?

如何解壓 golang 中的 grpc status.details 錯誤?

Go
海綿寶寶撒 2022-06-27 16:04:32
我想為我的 REST API 使用 google.golang.org/grpc/status 錯誤模型,因為它說您可以:該Status類型定義了適用于不同編程環境的邏輯錯誤模型,包括 REST API 和 RPC API。但是我遇到details了結構部分的問題。我知道它是 type []*anypb.Any,但是,我不清楚如何將它變成“解包”形式,因此我可以看到 Field 和 Description 屬性,而不是 base64 編碼的value字段。我得到了什么:{    "code": 3,    "message": "One or more fields are invalid",    "details": [        {            "type_url": "type.googleapis.com/google.rpc.BadRequest.FieldViolation",            "value": "CgVFbWFpbBIUSW52YWxpZCBlbWFpbCBmb3JtYXQ="        },        {            "type_url": "type.googleapis.com/google.rpc.BadRequest.FieldViolation",            "value": "CghQYXNzd29yZBIeTXVzdCBiZSBhdCBsZWFzdCAxMCBjaGFyYWN0ZXJz"        }    ]}我應該得到什么:{    "code": 3,    "message": "One or more fields are invalid",    "details": [        {            "type_url": "type.googleapis.com/google.rpc.BadRequest.FieldViolation",            "field": "Email",            "description": "Invalid email format"        },        {            "type_url": "type.googleapis.com/google.rpc.BadRequest.FieldViolation",            "field": "Password",            "description": "Must be at least 10 characters"        }    ]}
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

編碼器json不是 100% 兼容 protobuf。

使用protojson.Marshalfrom"google.golang.org/protobuf/encoding/protojson"代替。

看到這個游樂場。

雖然它沒有那么快。

編輯要回答更快的替代方案的請求:

可以使用包含所有必需數據的自定義錯誤結構并手動解開 grpc 狀態及其詳細信息??吹竭@個游樂場。在我的機器上,這節省了大約 15% 的時間。


查看完整回答
反對 回復 2022-06-27
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號