我了解这里没有正确或错误的答案。
我看到了一个gRPC API,该API返回“ google.protobuf.Any”。 API的工作是获取一个参数,该参数说明需要获取哪些信息,并返回“ n”个东西之一。
从API设计的角度来看,定义这样的API是一种好习惯吗? 另一种选择是使用“ oneof”结构定义一个返回消息,我认为该消息紧密绑定了API可以返回的内容。
请让我知道您的想法。
感谢您的时间。
rpc getInformation(InfomationRequestParams) returns (google.protobuf.Any);
答案 0 :(得分:0)
从API返回任意值很常见。如果您有一组不经常添加的严格选项,那么oneof
是首选,但如果任何人可能想要扩展发送的内容,则不适合使用enum
。该决定类似于您选择在API中使用string
还是ibmcloud fn namespace list
。
似乎不包装Any消息似乎很奇怪,因为通常存在与类型无关的信息。但这与您的API实际提供的功能更为特定,因此可以保持原样。