当前位置: 首页 > 知识库问答 >
问题:

gRPC和Swagger注释差异

卢志强
2023-03-14

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

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

因此,gRPC有效负载就像预期的那样,是一个简单的值元组。然而,我还想为同一条消息的REST API生成一些招摇过市的注释,但它似乎将时间戳转换为RFC 3339样式的字符串:

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

我最近开始使用协议缓冲区和gRPC,所以我不确定这里是否遗漏了什么,但这似乎与gRPC网关实现不一致。为什么REST的格式与gRPC有效负载的格式不同?或者,我是否错过了告诉protoc gen swagger不要将消息转换为字符串的方法?

共有1个答案

寇夜洛
2023-03-14

我对protoc gen swagger本身并不太熟悉,但我相信这是因为这里定义了json proto格式:

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

这样做是为了使基于JSON的API更加“自然”。我不知道有什么办法可以避免这种情况,除非用你自己的类型来保存时间戳,而不是谷歌。protobuf。时间戳。然而,JSON转换预计在两个方向都能正常工作,因此,当库将JSON转换回proto消息时,应该不会导致任何问题。

 类似资料:
  • 我开发了一个带有Swagger注释的REST API。我已经能够展示一个炫耀的ui应用程序的api文档,非常好。 问题:根据我的注释,我试图使用swagger提供的url生成符合该规范的客户端。问题是,它似乎是不兼容的,或者至少,我不知道如何做swagger编辑器读取我的网址,并从那时起,产生客户。但是swagger编辑器向我报告了一些错误... 是否可以将我的带注释的 swagger api 与

  • 简介 gRPC-swagger 是基于 gRPC 反射开发的一款 gRPC 调试工具,可以使用 swagger-ui 方便地展示和调用 gRPC 方法。因为 gRPC-swagger 是基于反射开发,所以使用时无需修改 proto 及相关的代码实现,只需在启动服务时开启反射功能。 特点 简单易用,只需启动服务时允许反射,无需修改 proto 及相关的实现。 集成 swagger-ui,可以方便的查

  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 当我访问我的Swagger UIendpoint时,我会看到这个服务的记录良好的条目,包括关于和参数的信息。现在,我试图以类似的方式创建和方法,但遇到了一个问题。 由于我的/请求包含许多表单参数,所以我将它们封装到一个对象中,并用注释该方法。我的表单对象如下所示: 我的方法如下所示: 什么也没做。我尝试将方法签名更改为如下所示: 还是什么都没有。我的问题是,是否有一种方法可以让OpenAPI/Sw

  • 和之间有什么区别? 我在一些Spring反应示例中看到,使用了而不是