构建 RPC 服务
构建 RPC 服务
Section titled “构建 RPC 服务”本节创建一个用户 gRPC 服务,并展示如何在另一个服务中调用它。
确保已安装 protoc 和相关插件,参考 安装 protoc。
mkdir user-rpc && cd user-rpcgo mod init user-rpc编写 Proto 文件
Section titled “编写 Proto 文件”新建 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;}goctl rpc protoc user.proto \ --go_out=./pb \ --go-grpc_out=./pb \ --zrpc_out=.go mod tidy实现业务逻辑
Section titled “实现业务逻辑”打开 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}go run user.go -f etc/user.yaml