Getting started - gRPC application
Yokai provides a ready to use gRPC application template to start your gRPC projects.
Overview
The gRPC application template provides:
- a ready to extend Yokai application, with the gRPC server module installed
- a ready to use dev environment, based on Air (for live reloading)
- a ready to use Dockerfile for production
- some examples of service and test to get started
Layout
This template is following the recommended project layout:
cmd/
: entry pointsconfigs/
: configuration filesinternal/
:service/
: gRPC service and test examplesbootstrap.go
: bootstrapregister.go
: dependencies registration
proto/
: protobuf definition and stubs
Makefile
This template provides a Makefile:
make up # start the docker compose stack
make down # stop the docker compose stack
make logs # stream the docker compose stack logs
make fresh # refresh the docker compose stack
make stubs # generate gRPC stubs with protoc (ex: make stubs from=proto/example.proto)
make test # run tests
make lint # run linter
Installation
With GitHub
You can create your repository using the GitHub template.
It will automatically rename your project resources, this operation can take a few minutes.
Once ready, after cloning and going into your repository, simply run:
With gonew
You can install gonew, and simply run:
Usage
Once ready, the application will be available on:
localhost:50051
for the application gRPC server- http://localhost:8081 for the application core dashboard
If you update the proto definition, you can run make stubs from=proto/example.proto
to regenerate the stubs.
Usage examples with gRPCurl:
- with
ExampleService/ExampleUnary
:
grpcurl -plaintext -d '{"text":"hello"}' localhost:50051 example.ExampleService/ExampleUnary
{
"text": "response from grpc-app: you sent hello"
}
- with
ExampleService/ExampleStreaming
:
grpcurl -plaintext -d '@' localhost:50051 example.ExampleService/ExampleStreaming <<EOF
{"text":"hello"}
{"text":"world"}
EOF
{
"text": "response from grpc-app: you sent hello"
}
{
"text": "response from grpc-app: you sent world"
}
You can use any gRPC clients, for example Postman or Evans.
Going further
To go further, you can:
- check the gRPC server module documentation to learn more about its features
- follow the gPRC application tutorial to create, step by step, a gRPC application
- test the gPRC demo application to see all this in action