我目前正在创建一个 gRPC 服务,该服务使用 gRPC 网关/HTTP 反向代理来提供 HTTP 支持。我想遵循 Google API 设计的通用约定。
我在 Google API 设计指南中找到的示例google.protobuf.Empty
使用消息来响应删除方法/RPC。这很好,但是当我使用来自grpc-gateway的 protoc -gen-swagger 从文件生成.swagger.json
文件时,消息的描述被拉入作为响应对象的描述。这对我的 API 的用户来说是无关紧要的,并且可能会让人感到困惑,因为使用 HTTP 网关的人没有使用 protobufs。.proto
google.protobuf.Empty
...
"paths": {
"/v1/{name}": {
"delete": {
"summary": "Deletes a book.",
"operationId": "DeleteBook",
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/protobufEmpty"
}
}
},
...
}
}
},
"definitions": {
"protobufEmpty": {
"type": "object",
"description": "service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
"title": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:"
}
}
我想说这是一个应该由 protoc-gen-swagger 插件解决的问题,除了它确实在做它应该做的事情。是否有 HTTP 注释以某种方式处理或覆盖响应中的字段?如果不是,人们如何处理这个问题?