我们正在探索google Cloud Endpoint,以将gRPC服务公开为REST API。这些服务使用包含Any类型字段的proto3消息。
云端点的可扩展服务代理是否支持嵌入自定义消息类型的Any字段的JSON代码转换?开箱即用,它似乎不支持这一点,并返回以下错误
{
"code": 13,
"message": "Type 'type.acmeapis.com/acme.v1.Augmentation' cannot be found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "internal"
}
]
}这需要在电除尘器上配置TypeRegistry吗?如果是,有没有办法做到这一点?
发布于 2021-06-13 01:33:14
我没有尝试对包含Any的消息使用云端点,但我认为不太可能将代理配置为对封装的消息进行代码转换。这是可能的,但我认为即使是特使也不太可能实现这一点(但是,我也不知道)。
目前还不清楚如果这样做,那么产生的REST API的语义是什么:
rpc AddGeneric (AddGenericRequest) returns (AddGenericResponse) {}可能会变成:
post: "v1alpha/add"
body: "generic"使用Any的类型将是由字节数组和字符串描述符组成的类型,这可以理解为REST API,但您的问题背后的原因可能需要REST客户端解码封装的消息。
但是,如果代码转换是递归地对封装的消息进行代码转换,那么这个(!)方法需要定义多种可能的消息体类型:
post: "v1alpha/add"
body: ["type-a" | "type-b" | "type-c" | ... ]这虽然方便,但似乎有点不安宁。代码转换并不要求生成RESTful API,但它可能解释了其中的复杂性。
要获得明确的响应,我建议您在谷歌维护的ESPv2的GitHub代码库上创建一个issue。那里的人们反应迅速,乐于助人。
https://stackoverflow.com/questions/67950985
复制相似问题