gRPC—proto文件编写
// 说明我们使用的时proto3语法
syntax = "proto3";
option go_package = ".;service";
// 类似于方法
service SayHello{
rpc SayHello(HelloRequests) returns(HelloResponse){}
}
// 类似于结构体
message HelloRequests{
string requestName = 1;
}
message HelloResponse{
string responseName = 1;
}
在编写完上面的内容后,在/proto目录下执行如下命令:
protoc --go_out=. /hello.proto
protoc --go-grpc_out=. hello.proto
运行完代码后会在proto目录下生成两个.go文件:
hello_grpc.pb.go
hello.pb.go
gRPC—proto文件介绍
message
message关键词类似于结构体,在消息中承载的数据分别对应于每一个字段,其中每一个字段都有一个名字和一种类型
一个proto文件中可以定义多个消息类型
字段规则
required:消息体中必填字段。不设置会导致编码异常,在protobuf2中使用,在protobuf3被删去
optional:消息体中可选字段,protobuf3中没有了required,optional等关键字,都默认为optional
repeate :消息体中 可重复字段,重复的值的顺序会被保留在go中重复的会被定义为切片
消息号
在消息体的定义中,每个字段必须要有唯一的标识号,标识号是[1,2^29-1]范围内的一个整数
嵌套消息
message PersonInfo{
message Person{
string name = 1;
int32 height = 2;
repeated int32 weight = 3;
}
repeated Person info = 1
}
服务定义
如果想要将消息类型用在RPC系统中,可以在 .proto文件中定义一个RPC服务接口,protocol buffer 编译器将会根据所选择的不同语言生成服务器接口代码及存根。文章来源:https://www.toymoban.com/news/detail-420626.html
service SearchService{
rpc Search(SearchRequest) returns (SearchResponse)
}
上述表示定义了一个RPC服务,该方法接受SearchRequest返回SearchResponse文章来源地址https://www.toymoban.com/news/detail-420626.html
到了这里,关于gRPC---proto文件编写及文件介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!