小伙伴们有没有觉得学习golang很有意思?有意思就对了!今天就给大家带来《grpc 方法可以返回包含字符串或 null 字段的消息吗?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容
我正在设计一个用 Go 编写的 grpc 服务。
位于 grpc 服务前面的是 envoy,它将传入的 Http 请求转换为 grpc,并将 grpc 响应转换为 JSON。
此应用程序的要求是有一个返回以下 json 对象的端点:
{
my_id: "aaa"
}
我可以在 go 中非常简单地模拟这个响应,如下所示:
// a myresponse object.
message myresponse {
// contents is a list of contents.
string my_id = 1;
}
但我的要求是有时 my_id 可能为空。在这种情况下,我想返回以下 json:
{
my_id: null
}
它
是否可以修改 myresponse,以便 my_id 可以是返回的 json 对象中的字符串或 null?如果是这样,怎么办?如果不是的话,这不是grpc设计上的一个很大的差距吗?
解决方案
我建议您使用包 google.protobuf 的 StringValue 字段:
stringvalue 字符串的包装消息。
stringvalue 的 json 表示形式是 json 字符串。
因此,在您的原型文件中,您应该导入:
import "google/protobuf/wrappers.proto";
然后使用示例:
google.protobuf.StringValue name = 2;
要处理这些值,您可以检查 wrappers.stringvalue GitHub.com/golang/protobuf/ptypes/wrappers 包的类型和 google.golang.org/protobuf/types/known/wrapperspb 存储库的帮助程序。
好了,本文到此结束,带大家了解了《gRPC 方法可以返回包含字符串或 null 字段的消息吗?》,希望本文对你有所帮助!