Golang basic REST API is a web application structure using an onion architecture approach.
It implements controller, service, database layers, that makes above layers independent of which database (or any other
bottom layer type e.g. other API downstream) type is being used.
There are cmd
implemented examples of the application, for each database type: mongo
, mysql
and postgres
.
It also could be a useful structure for Golang development, having model, config loading, implemented GitHub workflows, Makefile, that are often requirements of a Golang application.
Before to run application you may setup .env
with Config
values.
Check out the following tables to know all Config
parameters detailed.
Parameter | Description | Type | Default | Required |
---|---|---|---|---|
DB_ADDRESS |
Database URL address. | string |
|
YES |
DB_NAME |
Name of the initial database to access. | string |
|
NO |
MIGRATIONS_PATH |
Migrations local path if needed. | string |
|
NO |
HOST |
HTTP server host number. | string |
|
NO |
PORT |
HTTP server port number. | string |
|
YES |
After define env
variables values, run the following commands to start web application server.
The different examples of running this application packages and features are available in cmd
.
For a REST application with a postgres database layer use:
go run ./cmd/postgres/main.go
For a REST application with MySQL database layer use:
go run ./cmd/mysql/main.go
For a REST application with MongoDB database layer use:
go run ./cmd/mongo/main.go
API specs could be find in openapi.yml
and swagger.yml
files.
To generate Swagger spec in Unix run te following command:
swagger generate spec -o ./swagger.yml --scan-models
If you're using windows use the following command before swagger code:
docker run --rm -it --env GOPATH=/go -v %CD%:/go/src -w /go/src quay.io/goswagger/swagger <swagger code here>
For information about Swagger installation, check this:
Source: 🔗 Go Swagger