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