竹简文档
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;
}

字段说明

字段类型说明
contextstring请求追踪 ID,由 Trace 拦截器生成,ResponseBuilder 注入
outputstring输出标识,如 "Success""PARAMETER_ERROR"
codeuint64业务状态码,200 表示成功
messagestring人类可读的描述信息
error_messageoptional string补充性错误详情,仅错误场景填充
overheadoptional int64请求处理耗时(微秒),仅调试模式填充

BaseResponse 是纯元信息结构,不包含 data 字段。业务数据通过自定义响应 proto 嵌入 BaseResponse,由 SuccessWith[T] 泛型注入。

Buf 管理

Proto 生成已从 make proto 迁移到 Buf

buf.yaml

buf.yaml
version: v2
modules:
  - path: proto
deps:
  - buf.build/protocolbuffers/wellknowntypes

buf.gen.yaml

buf.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 字段:

proto/your_service.proto
syntax = "proto3";

package yourService;

import "proto/base.proto";

option go_package = "./generate;pb";

message YourResponse {
  xBase.BaseResponse base_response = 1;
  // 你的业务字段...
  string name = 2;
}

下一步

On this page