gRPC API返回“ Any”是个好主意吗?

时间:2019-06-27 04:41:08

标签: grpc

我了解这里没有正确或错误的答案。

我看到了一个gRPC API,该API返回“ google.protobuf.Any”。 API的工作是获取一个参数,该参数说明需要获取哪些信息,并返回“ n”个东西之一。

从API设计的角度来看,定义这样的API是一种好习惯吗? 另一种选择是使用“ oneof”结构定义一个返回消息,我认为该消息紧密绑定了API可以返回的内容。

请让我知道您的想法。

感谢您的时间。

rpc getInformation(InfomationRequestParams) returns (google.protobuf.Any);

1 个答案:

答案 0 :(得分:0)

从API返回任意值很常见。如果您有一组不经常添加的严格选项,那么oneof是首选,但如果任何人可能想要扩展发送的内容,则不适合使用enum。该决定类似于您选择在API中使用string还是ibmcloud fn namespace list

似乎不包装Any消息似乎很奇怪,因为通常存在与类型无关的信息。但这与您的API实际提供的功能更为特定,因此可以保持原样。