定义服务

简要概述

如何通过 proto 编写一个符合相同规范的服务定义。

示例模版

// 仅支持版本 proto3
syntax = "proto3";

// 服务包名称
package grpc_kit.api.opsaid.test1.v1;

// 生成的 go 包
option go_package = "github.com/opsaid/test1/api/opsaid/test1/v1;test1v1";

// 引入依赖的外部 proto 文件
import "github.com/grpc-kit/api/known/status/v1/response.proto";

// 同组 RPC 方法对应一个 proto 文件,以该组 RPC 名称的小写字母为文件名
import "github.com/opsaid/test1/api/opsaid/test1/v1/demo.proto";

// 该微服务支持的 RPC 方法定义
service OpsaidTest1 {
  rpc HealthCheck(grpc_kit.api.known.status.v1.HealthCheckRequest) returns (grpc_kit.api.known.status.v1.HealthCheckResponse) {}
  rpc Demo(DemoRequest) returns (DemoResponse) {}
}

名称规范

proto 包名

格式:

package {组织代码}.api.{产品代码}.{应用短名}.{接口版本}

示例:

package grpc_kit.api.opsaid.test1.v1;
名称 示例 说明
组织代码 grpc_kit 同一个组织下,如:公司、部门等
产品代码 opsaid 同一个产品体系,如:运维助手
应用短名 test1 同一个产品友好名称,如:告警服务
接口版本 v1 服务接口主版本,微服务在 “0.1.X” 与 “1.X” 均表示为 “v1”

go 包名

格式:

option go_package = "{引用 pb.go 包地址};{应用短名}{接口版本}";

示例:

option go_package = "github.com/grpc-kit/pkg/api/known/example/v1;examplev1";
名称 示例 说明
引用 pb.go 包地址 github.com/grpc-kit/pkg/api/known/example/v1 不一定是 proto 源文件地址
{应用短名}{接口版本} examplev1 两个组合,中间没有任何分隔符

service 名称

格式:

service {产品代码}{应用短名} {
	......
}

示例:

service OpsaidTest1 {
  ......
}
名称 示例 说明
{产品代码}{应用短名} OpsaidTest1 两个单词组合,中间无风格符且首字母大写



最后修改 13.03.2023: feat: 更新文档 (6609f2c)