gpt4 book ai didi

go - gRPC 和 Swagger 注解区别

转载 作者:IT王子 更新时间:2023-10-29 02:08:24 26 4
gpt4 key购买 nike

我有一个 Protocol Buffer 定义,其中包括 google.protobuf.Timestamp 作为消息的一部分。 Timestamp 消息非常简单,具有以下定义:

message Timestamp {
int64 seconds = 1;
int32 nanos = 2;
}

因此,gRPC 负载如预期的那样作为一个简单的值元组出现。但是,我还想为同一消息的 REST API 生成一些 swagger 注释,但它似乎将时间戳转换为 RFC 3339 样式字符串:

"timestamp": {
"type": "string",
"format": "date-time",
"title": "timestamp"
}

我最近开始使用 Protocol Buffer 和 gRPC,所以我不确定我是否遗漏了什么,但这似乎与 grpc-gateway 实现不一致。为什么 REST 的格式与 gRPC 负载不同?还是我错过了一些方法来告诉 protoc-gen-swagger 不要将消息转换为字符串?

最佳答案

我不太熟悉 protoc-gen-swagger 本身,但我相信这是因为这里定义的 json-proto 格式而发生的:

https://developers.google.com/protocol-buffers/docs/proto3#json

这样做是为了让基于 JSON 的 API 更加“自然”。除了使用您自己的类型来保存时间戳而不是 google.protobuf.Timestamp 之外,我不知道有什么方法可以避免这种情况。但是,JSON 转换应该在两个方向上都能正常工作,因此当库将 JSON 转换回原始消息时,应该不会造成任何问题。

关于go - gRPC 和 Swagger 注解区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53276555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com