Skip to main content

gRPC demo code generation

Overview

After completing the goctl installation, we can create a minimal gRPC service to get an overview of goctl's go-zero gRPC service.

Task Targets

  1. Learn how to create a minimized gRPC service using goctl
  2. Preliminary understanding of the project structure of go-zero
  3. Preliminary method of gRPC local debugging

Preparing

  1. Complete golang installation
  2. Complete goctl installation

Code Generation

# Create workspaces and enter the directory
$ mkdir -p ~/workspace/rpc && cd ~/workspace/rpc
# Execute instructions generated demo service
$ goctl rpc new demo
Done.

After executing the instruction, a demo directory will be generated under the current directory that contains a minimized gRPC service. We will check the directory structure of the service.

# Enter the demo service directory
$ cd ~/workspace/rpc/demo
# view file list
$ ls
demo demo.go demo.proto democlient etc go.mod internal
# View directory interface
$ tree
.
├── demo
│   ├── demo.pb.go
│   └── demo_grpc.pb.go
├── demo.go
├── demo.proto
├── democlient
│   └── demo.go
├── etc
│   └── demo.yaml
├── go.mod
└── internal
├── config
│   └── config.go
├── logic
│   └── pinglogic.go
├── server
│   └── demoserver.go
└── svc
└── servicecontext.go
note

API, RPC, Job Directory structure is similar to what the go-zero project structure can look at Project Structure

Write simple logic code

After completing the above code generation, we can find ~/workspace/api/demo/internal/logic/demologic.go files, replace codes at line 29 as follows :

return &demo.Response{
Pong:"pong",
}, nil

Then set your profile ~/workspace/rpc/depo/etc/demo.yamlremove 3 to 7 to lines of content, then add-on Mode: dev to end, making configuration file content:

Name: demo.rpc
ListenOn: 0.0.0.0:8080
Mode: dev

:::Note goctl generates minimized gRPC service by registering information about the current service from ETCD Register, so registration is not required for this demonstration, so the registration center configuration in the configuration file has been deleted. :::

Start service

After writing the above code, we can start the service with the following instructions:

# Enter service directory
$ cd ~/workspace/rpc/demo
# Organize dependencies
$ go mod tidy
# Run go program
$ go go run demo.go

When you see the following output Starting rpc server at 0.0.0.0:8080...indicates that the service has been successfully started, then we come to visit the gRPC service.

$ grpcurl -plaintext 127.0.0.1:8080 demo.Demo/Ping
``

on behalf of your service has been successfully launched when you see the following output in the terminal.

```json
{
"pong": "pong"
}
NOTE

grpcurl is a command-line tool for accessing gRPC services, for details, please refer to 《grpcurl》

When you come here following the steps in the document, congratulations, you have completed the creation and startup of the simplest go-zero api service. For instructions on using the goctl tool, please refer to "CLI Tools", for a complete description of the go-zero api service, please refer to 《HTTP Server》.