> 文章列表 > gRPC---proto文件编写及文件介绍

gRPC---proto文件编写及文件介绍

gRPC---proto文件编写及文件介绍

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 编译器将会根据所选择的不同语言生成服务器接口代码及存根。

service SearchService{rpc Search(SearchRequest) returns (SearchResponse)
}

上述表示定义了一个RPC服务,该方法接受SearchRequest返回SearchResponse

爱美丽美妆