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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值