我正在尝试使用
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]
如何解决这个问题?
感谢Daz的参考,
通过使用 buf 生成 deps 然后生成 swagger 解决了这个问题
所以基本上,我以前就这样做过
buf mod update && buf generate
执行以下操作解决了问题
buf mod update && buf generate buf.build/googleapis/googleapis && buf generate