简单模式:简单模式只是使用参数和返回值作为服务器与客户端传递数据的方式
实际编码在定义服务时:入参什么也不要加
// The service definition.
service ToUpper{
rpc Upper (UpperRequest) returns (UpperReply) {
}
}
- 建立如下工程:
编写文件proto文件
syntax="proto3";
package proto;
// The request message
message UpperRequest {
string name = 1;
}
// The response message
message UpperReply {
string message = 1;
}
// The service definition.
service ToUpper{
// Sends a greeting
rpc Upper (UpperRequest) returns (UpperReply) {
}
}
- protoc.exe --go_out=plugins=grpc:. execl.proto.go 生成execl.proto.go.pb 文件
可以看出,生成的文件中,增加了对应的方法
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.21.0
// protoc v3.6.1
// source: jiandanmushi.proto
package proto
import (
context "context"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// The request message
type UpperRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *UpperRequest) Reset() {
*x = UpperRequest{
}
if protoimpl.UnsafeEnabled {
mi := &file_jiandanmushi_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpperRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpperRequest) ProtoMessage() {
}
func (x *UpperRequest) ProtoReflect() protoreflect.Message {
mi := &file_jiandanmushi_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpperRequest.ProtoReflect.Descriptor instead.
func (*UpperRequest) Descriptor() ([]byte, []int) {
return file_jiandanmushi_proto_rawDescGZIP(), []int{
0}
}
func (x *UpperRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// The response message
type UpperReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
}
func (x *UpperReply) Reset() {
*x = UpperReply{
}
if protoimpl.UnsafeEnabled {
mi := &file_jiandanmushi_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf