trpc.group/trpc-go/trpc-go@v1.0.3/docs/quick_start.zh_CN.md (about) 1 [English](quick_start.md) | 中文 2 3 ## 快速开始 4 5 ### 准备工作 6 7 - **[Go](https://go.dev/doc/install)**, 版本应该大于等于 go1.18。 8 - **[tRPC 命令行工具](https://github.com/trpc-group/trpc-cmdline)**, 用于从 protobuf 生成 Go 桩代码。 9 10 ### 获取示例代码 11 12 示例代码是 tRPC-Go 仓库的一部分。 13 克隆仓库并进入 helloworld 目录。 14 ```bash 15 $ git clone --depth 1 git@github.com:trpc-group/trpc-go.git 16 $ cd trpc-go/examples/helloworld 17 ``` 18 19 ### 执行示例 20 21 1. 编译并执行服务端代码: 22 ```bash 23 $ cd server && go run main.go 24 ``` 25 2. 打开另一个终端,编译并执行客户端代码: 26 ```bash 27 $ cd client && go run main.go 28 ``` 29 你会在客户端日志中发现 `Hello world!` 字样。 30 31 恭喜你!你已经成功地在 tRPC-Go 框架中执行了客户端-服务端应用示例。 32 33 ### 更新 protobuf 34 35 可以看到,protobuf `./pb/helloworld.proto` 定义了服务 `Greeter`: 36 ```protobuf 37 service Greeter { 38 rpc Hello (HelloRequest) returns (HelloReply) {} 39 } 40 41 message HelloRequest { 42 string msg = 1; 43 } 44 45 message HelloReply { 46 string msg = 1; 47 } 48 ``` 49 它只有一个方法 `Hello`。它的参数是 `HelloRequest`,返回一个 `HelloReply`。 50 51 现在,我们加入一个新的方法 `HelloAgain`,使用相同的参数和返回值。 52 ```protobuf 53 service Greeter { 54 rpc Hello (HelloRequest) returns (HelloReply) {} 55 rpc HelloAgain (HelloRequest) returns (HelloReply) {} 56 } 57 58 59 message HelloRequest { 60 string msg = 1; 61 } 62 63 message HelloReply { 64 string msg = 1; 65 } 66 ``` 67 68 通过在 `./pb` 目录中执行 `$ make` 方法来重新生成 tRPC 桩代码。 69 在「准备工作」一节,我们已经安装了 Makefile 所需要的命令行工具 `trpc`。 70 71 ### 更新并执行服务端和客户端 72 73 在服务端 `server/main.go`,加入以下代码来实现 `HelloAgain`: 74 ```go 75 func (g Greeter) HelloAgain(ctx context.Context, req *pb.HelloRequest) (*pb.HelloReply, error) { 76 log.Infof("got HelloAgain request: %s", req.Msg) 77 return &pb.HelloReply{Msg: "Hello " + req.Msg + " again!"}, nil 78 } 79 ``` 80 81 在客户端 `client/main.go`,加入以下代码来调用 `HelloAgain`: 82 ```go 83 rsp, err = c.HelloAgain(context.Background(), &pb.HelloRequest{Msg: "world"}) 84 if err != nil { 85 log.Error(err) 86 } 87 log.Info(rsp.Msg) 88 ``` 89 90 按「执行示例」一节重新再执行一遍示例,你可能看到 `Hello world again!` 出现在客户端日志中。 91 92 ### 下一步 93 94 - 了解 [tRPC 设计原理](https://github.com/trpc-group/trpc)。 95 - 阅读 [基础教程](./basics_tutorial.zh_CN.md) 来更深入地了解 tRPC-Go。 96 - 查阅 [API 手册](https://pkg.go.dev/trpc.group/trpc-go/trpc-go)。 97