BufBuild
Contents
BufBuild
https://buf.build/docs/cli/installation/#homebrew
syntax = "proto3";
package example;
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
message GetUserRequest {
string id = 1;
}
message User {
string id = 1;
string name = 2;
}
service UserService {
// 定义 HTTP 映射: GET /v1/users/{id}
rpc GetUser(GetUserRequest) returns (User) {
option (google.api.http) = {
get: "/v1/users/{id}"
};
// 用于 Swagger 文档的描述
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "获取用户信息";
description: "根据 ID 返回用户详细信息";
};
}
rpc ListUsers(google.protobuf.Empty) returns (stream User) {
option (google.api.http) = {
get: "/v1/users"
};
}
}
buf.gen.yaml
version: v2
plugins:
# 1. 生成 Protobuf Go 代码
- local: protoc-gen-go
out: .
opt: paths=source_relative
# 2. 生成 gRPC Go 代码
- local: protoc-gen-go-grpc
out: .
# opt: paths=source_relative,require_unimplemented_servers=false
opt: paths=source_relative
# 2. 生成 gRPC Go 代码
- local: protoc-gen-connect-go
out: .
opt: paths=source_relative
# 4. 生成 Swagger/OpenAPI 文档
- local: protoc-gen-openapiv2
out: .
# opt 可以配置 swagger 的具体行为,如输出格式、是否包含服务等
# opt: logtostderr=true,allow_merge=true,merge_file_name=swagger # 合并为一个文件
buf.yaml
# For details on buf.yaml configuration, visit https://buf.build/docs/configuration/v2/buf-yaml
version: v2
lint:
use:
- STANDARD
deps:
- buf.build/googleapis/googleapis # Google API 注解 (http, annotations)
- buf.build/grpc-ecosystem/grpc-gateway
breaking:
use:
- FILE
生成
buf generate