我有一个协议缓冲区定义,它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"}我最近开始使用协议缓冲区和 gRPC,所以我不确定我是否遗漏了什么,但这似乎与 grpc-gateway 实现不一致。为什么 REST 的格式与 gRPC 负载不同?还是我错过了一些方法来告诉 protoc-gen-swagger 不要将消息转换为字符串?
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
我不太熟悉 protoc-gen-swagger 本身,但我相信这是因为这里定义的 json-proto 格式而发生的:
这样做是为了让基于 JSON 的 API 更加“自然”。我不知道有什么办法可以避免这种情况,除非使用您自己的类型来保存时间戳而不是google.protobuf.Timestamp
. 但是,JSON 转换应该在两个方向上都能正常工作,所以当库将 JSON 转换回原始消息时,应该不会造成任何问题。
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消