定义服务
少于1分钟
简要概述
如何通过 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)