跳转到内容

构建 RPC 服务

本节创建一个用户 gRPC 服务,并展示如何在另一个服务中调用它。

确保已安装 protoc 和相关插件,参考 安装 protoc

Terminal window
mkdir user-rpc && cd user-rpc
go mod init user-rpc

新建 user.proto

syntax = "proto3";
package user;
option go_package = "./pb";
service User {
rpc GetUser(GetUserRequest) returns (GetUserResponse);
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
}
message GetUserRequest {
int64 id = 1;
}
message GetUserResponse {
int64 id = 1;
string username = 2;
string email = 3;
}
message CreateUserRequest {
string username = 1;
string email = 2;
}
message CreateUserResponse {
int64 id = 1;
}
Terminal window
goctl rpc protoc user.proto \
--go_out=./pb \
--go-grpc_out=./pb \
--zrpc_out=.
go mod tidy

打开 internal/logic/getuserlogic.go

func (l *GetUserLogic) GetUser(in *pb.GetUserRequest) (*pb.GetUserResponse, error) {
return &pb.GetUserResponse{
Id: in.Id,
Username: "admin",
Email: "admin@example.com",
}, nil
}
Terminal window
go run user.go -f etc/user.yaml

API DSL 语法参考 →