使用流rpc发出buf生成时出现未知的参考swagger问题

问题描述 投票:0回答:1

我正在尝试使用

buf generate
生成 swagger.json。

这是我的示例原型文件

import "google/rpc/status.proto";

  rpc Create(stream CreateRequest) returns (stream
    CreateResponse) {
    option (google.api.http) = {
      post : "/v1/create"
      body : "*"
    };
  }

这是我的示例 buf.yaml。我已经添加了 googleapis dep

version: v1beta1
name: buf.build/github/repo
deps:
  - buf.build/grpc-ecosystem/grpc-gateway
  - buf.build/razorpay/googleapis-pubsub
  - buf.build/googleapis/googleapis
build:
  roots:
    - proto

生成的swagger文件是

    "/v1/create": {
      "post": {
        "summary": "",
        "operationId": "",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/x.y.v1.CreateResponse"
                },
                "error": {
                  "$ref": "#/definitions/google.rpc.Status"
                }
              },
              "title": ""
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": " (streaming inputs)",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/x.y.v1.CreateRequest"
            }
          }
        ],
        "tags": [
          "x"
        ]
      }
    },

由于流的性质,“错误”块会自动生成,并且 swagger 会抛出以下错误

Unknown reference:
#/definitions/google.rpc.Status:[line-number]:[column-length]

如何解决这个问题?

swagger protocol-buffers rpc buf
1个回答
0
投票

感谢Daz的参考,

通过使用 buf 生成 deps 然后生成 swagger 解决了这个问题

所以基本上,我以前就这样做过

buf mod update && buf generate

执行以下操作解决了问题

buf mod update && buf generate buf.build/googleapis/googleapis && buf generate

© www.soinside.com 2019 - 2024. All rights reserved.