gpt4 book ai didi

google-api - 谷歌 gRPC 网关 : Overriding response fields?

转载 作者:行者123 更新时间:2023-12-03 17:26:22 24 4
gpt4 key购买 nike

我目前正在创建一个 gRPC 服务,该服务使用 gRPC 网关/HTTP 反向代理来提供 HTTP 支持。我想遵循 Google API 设计的通用约定。

example我在 Google API 设计指南中发现使用 google.protobuf.Empty用于响应删除方法/RPC 的消息。这很好,但是当我生成 .swagger.json 时来自 .proto 的文件使用来自 grpc-gateway 的 protoc-gen-swagger 的文件,说明google.protobuf.Empty消息作为响应对象的描述被拉入。这对我的 API 用户来说是无关紧要的并且可能会造成混淆,因为使用 HTTP 网关的人没有使用 protobuf。

...
"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 注释以某种方式处理或覆盖响应中的字段?如果没有,人们如何处理?

最佳答案

您可以编写一个脚本,在 OpenAPI 规范生成后从 protoc 中删除不需要的元素。 .类似 jq 'del(.definitions.protobufEmpty)' your.swagger.spec.json应该管用。

关于google-api - 谷歌 gRPC 网关 : Overriding response fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795086/

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