gRPC(可选)
内置 Proto
记录 bamboo-base-go 内置 proto 定义,业务端可直接引用
内置 Proto
脚手架内置了 base.proto 基础响应结构,业务端可直接复用,避免重复定义。
base.proto
syntax = "proto3";
package xBase;
option go_package = ".;xGrpcGenerate";
// BaseResponse 表示 gRPC 统一响应的元信息部分。
message BaseResponse {
// 请求追踪标识(对应 HTTP 的 X-Request-UUID)。
string context = 1;
// 输出标识(如 "Success"、"PARAMETER_ERROR")。
string output = 2;
// 业务状态码(200 表示成功,其余与 xError.ErrorCode.Code 对应)。
uint64 code = 3;
// 人类可读的描述信息。
string message = 4;
// 补充性错误详情,仅在错误场景下填充。
optional string error_message = 5;
// 请求处理耗时(微秒),仅在调试模式下填充。
optional int64 overhead = 6;
}字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
context | string | 请求追踪 ID,由 Trace 拦截器生成,ResponseBuilder 注入 |
output | string | 输出标识,如 "Success"、"PARAMETER_ERROR" |
code | uint64 | 业务状态码,200 表示成功 |
message | string | 人类可读的描述信息 |
error_message | optional string | 补充性错误详情,仅错误场景填充 |
overhead | optional int64 | 请求处理耗时(微秒),仅调试模式填充 |
BaseResponse是纯元信息结构,不包含data字段。业务数据通过自定义响应 proto 嵌入BaseResponse,由SuccessWith[T]泛型注入。
Buf 管理
Proto 生成已从 make proto 迁移到 Buf。
buf.yaml
version: v2
modules:
- path: proto
deps:
- buf.build/protocolbuffers/wellknowntypesbuf.gen.yaml
version: v2
plugins:
- protoc_builtin: go
out: grpc/generate
opt:
- paths=source_relative生成命令
buf generate生成结果输出到 grpc/generate/ 目录。
业务端引用方式
业务端不需要自己创建 proto 文件来引用 BaseResponse,直接在 Go 代码中 import 即可:
import xGrpcGenerate "github.com/bamboo-services/bamboo-base-go/plugins/grpc/generate"如需携带业务数据,在业务 proto 中嵌入 BaseResponse 字段:
syntax = "proto3";
package yourService;
import "proto/base.proto";
option go_package = "./generate;pb";
message YourResponse {
xBase.BaseResponse base_response = 1;
// 你的业务字段...
string name = 2;
}