Getting started - gRPC application (original) (raw)

Yokai provides a ready to use gRPC application template to start your gRPC projects.

Overview

The gRPC application template provides:

Layout

This template is following the recommended project layout:

Makefile

This template provides a Makefile:

[](#%5F%5Fcodelineno-0-1)make up # start the docker compose stack [](#%5F%5Fcodelineno-0-2)make down # stop the docker compose stack [](#%5F%5Fcodelineno-0-3)make logs # stream the docker compose stack logs [](#%5F%5Fcodelineno-0-4)make fresh # refresh the docker compose stack [](#%5F%5Fcodelineno-0-5)make stubs # generate gRPC stubs with protoc (ex: make stubs from=proto/example.proto) [](#%5F%5Fcodelineno-0-6)make test # run tests [](#%5F%5Fcodelineno-0-7)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:

[](#%5F%5Fcodelineno-2-1)gonew github.com/ankorstore/yokai-grpc-template github.com/foo/bar [](#%5F%5Fcodelineno-2-2)cd bar [](#%5F%5Fcodelineno-2-3)make fresh

Usage

Once ready, the application will be available on:

If you update the proto definition, you can run make stubs from=proto/example.proto to regenerate the stubs.

Usage examples with gRPCurl:

[](#%5F%5Fcodelineno-3-1)grpcurl -plaintext -d '{"text":"hello"}' localhost:50051 example.ExampleService/ExampleUnary [](#%5F%5Fcodelineno-3-2){ [](#%5F%5Fcodelineno-3-3) "text": "response from grpc-app: you sent hello" [](#%5F%5Fcodelineno-3-4)}

[](#%5F%5Fcodelineno-4-1)grpcurl -plaintext -d '@' localhost:50051 example.ExampleService/ExampleStreaming <<EOF [](#%5F%5Fcodelineno-4-2){"text":"hello"} [](#%5F%5Fcodelineno-4-3){"text":"world"} [](#%5F%5Fcodelineno-4-4)EOF [](#%5F%5Fcodelineno-4-5){ [](#%5F%5Fcodelineno-4-6) "text": "response from grpc-app: you sent hello" [](#%5F%5Fcodelineno-4-7)} [](#%5F%5Fcodelineno-4-8){ [](#%5F%5Fcodelineno-4-9) "text": "response from grpc-app: you sent world" [](#%5F%5Fcodelineno-4-10)}

You can use any gRPC clients, for example Postman or Evans.

Going further

To go further, you can: