Awesome Open Source
Awesome Open Source


Run on Google Cloud

All the boilerplate you need to get started with writing grpc-gateway powered REST services in Go.


Go 1.17+


Running main.go starts a web server on You can configure the port used with the $PORT environment variable, and to serve on HTTP set $SERVE_HTTP=true.

$ go run main.go

An OpenAPI UI is served on

Running the standalone server

If you want to use a separate gRPC server, for example one written in Java or C++, you can run the standalone web server instead:

$ go run ./cmd/standalone/ --server-address dns:///

Getting started

After cloning the repo, there are a couple of initial steps;

  1. If you forked this repo, or cloned it into a different directory from the github structure, you will need to correct the import paths. Here's a nice find one-liner for accomplishing this (replace with your cloned repo path):
    $ find . -path ./vendor -prune -o -type f \( -name '*.go' -o -name '*.proto' -o -name '*.yaml' \) -exec sed -i -e "s;;;g" {} +
  2. Finally, generate the files with make generate.

Now you can run the web server with go run main.go.

Making it your own

The next step is to define the interface you want to expose in proto/users/v1/user.proto. See tutorials and guides on writing Protobuf files. See the Buf style guide for tips on how to structure your packages.

Once that is done, regenerate the files using make generate. This will mean you'll need to implement any functions in server/server.go, or else the build will fail since your struct won't be implementing the interface defined by the generated files anymore.

This should hopefully be all you need to get started playing around with the gRPC-Gateway!

Alternatives To Grpc Gateway Boilerplate
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Golang (167,331
Rest (29,177
Gateway (10,553
Grpc (5,238
Grpc Gateway (150