clean-api-lite

module
v0.0.0-...-f79b915 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 6, 2024 License: MIT

README

Clean API Lite

This is a template I created for a simple, clean API implementation using the following tech stack:

  • Go - programming language of choice
  • gRPC - modern open source high performance Remote Procedure Call (RPC) framework
  • gRPC-gateway - gRPC to JSON proxy generator
  • buf - Protocol buffers build tool
  • DuckDB - fast, in-process, analytical database

Everything but DuckDB in this list are technology choices I would consider very standard/common and versatile to create any modern API. I decided to use DuckDB as well to provide a modern, yet super simple database fabric, hence the "lite" in this project's name.


Getting Started: Docker

To build and run the Docker image, just run:

make docker docker/run

You should see an output like the following:

docker run --rm -it -p 8080:8080 -p 8081:8081 clean-api-lite
2024/06/06 01:24:05 setting up database at lite.duckdb...
2024/06/06 01:24:05 gRPC Gateway listening on http://0.0.0.0:8081

You can call the REST API to create a user like so:

curl --location 'http://localhost:8081/api/v1/users' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
  "name": "John Doe",
  "email": "jdoe@userapi.com"
}'

And list users with:

curl --location 'http://localhost:8081/api/v1/users' \
--header 'Accept: application/json'

Changing Protobuf

You can change the protobuf at proto/users/v1/users.proto. Then use make generate to generate all new stubs, which are written to the gen/ directory.

Directories

Path Synopsis
cmd
gen
go/users/v1
Package authv1 is a reverse proxy.
Package authv1 is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL