net/http backend template¶
Package net
provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets. Package net/http provides HTTP client and server implementations.
- Create a new project with Fiber:
cgapp create
# Choose a backend framework:
# > net/http
# Fiber
-
Rename
.env.example
to.env
and fill it with your environment values. -
Install Docker and the following useful Go tools to your system:
- golang-migrate/migrate for apply migrations
- github.com/swaggo/swag for auto-generating Swagger API docs
- github.com/securego/gosec for checking Go security issues
-
Run project by this command:
make docker.run
- Go to API Docs page (Swagger): 127.0.0.1:5000/swagger/index.html.
./app
Folder with business logic only. This directory doesn't care about what database driver you're using or which caching solution your choose or any third-party things.
./app/controllers
folder for functional controllers (used in routes)./app/models
folder for describe business models and methods of your project./app/queries
folder for describe queries for models of your project./app/validators
folder for describe validators for models fields
./docs
Folder with API Documentation. This directory contains config files for auto-generated API Docs by Swagger.
./pkg
Folder with project-specific functionality. This directory contains all the project-specific code tailored only for your business use case, like configs, middleware, routes or utils.
./pkg/configs
folder for configuration functions./pkg/middleware
folder for add middleware (Fiber built-in and yours)./pkg/repository
folder for describeconst
of your project./pkg/routes
folder for describe routes of your project./pkg/utils
folder with utility functions (server starter, error checker, etc)
./platform
Folder with platform-level logic. This directory contains all the platform-level logic that will build up the actual project, like setting up the database or cache server instance and storing migrations.
./platform/cache
folder with in-memory cache setup functions (by default, Redis)./platform/database
folder with database setup functions (by default, PostgreSQL)./platform/migrations
folder with migration files (used with golang-migrate/migrate tool)
# .env
# Stage status to start server:
# - "dev", for start server without graceful shutdown
# - "prod", for start server with graceful shutdown
STAGE_STATUS="dev"
# Server settings:
SERVER_HOST="0.0.0.0"
SERVER_PORT=5000
SERVER_READ_TIMEOUT=60
# JWT settings:
JWT_SECRET_KEY="secret"
JWT_SECRET_KEY_EXPIRE_MINUTES_COUNT=15
JWT_REFRESH_KEY="refresh"
JWT_REFRESH_KEY_EXPIRE_HOURS_COUNT=720
# Database settings:
DB_HOST="localhost"
DB_PORT=5432
DB_USER="postgres"
DB_PASSWORD="password"
DB_NAME="postgres"
DB_SSL_MODE="disable"
DB_MAX_CONNECTIONS=100
DB_MAX_IDLE_CONNECTIONS=10
DB_MAX_LIFETIME_CONNECTIONS=2
# Redis settings:
REDIS_HOST="localhost"
REDIS_PORT=6379
REDIS_PASSWORD=""
REDIS_DB_NUMBER=0
Name | Version | Type |
---|---|---|
net/http | v1.16.2 | core |
auth0/go-jwt-middleware | v1.0.0 | middleware |
swaggo/http-swagger | v1.0.0 | middleware |
gorilla/mux | v1.8.0 | routes |
stretchr/testify | v1.7.0 | tests |
dgrijalva/jwt-go | v3.2.0 | auth |
joho/godotenv | v1.3.0 | config |
jmoiron/sqlx | v1.3.1 | database |
jackc/pgx | v4.11.0 | database |
go-redis/redis | v8.8.0 | cache |
swaggo/swag | v1.7.0 | utils |
google/uuid | v1.2.0 | utils |
go-playground/validator | v10.4.1 | utils |
- Template source code: github.com/create-go-app/net_http-go-template
- Author, maintainer: Vic Shóstak