gorest is a starter kit, written in Golang with Gin framework, for rapid prototyping and developing a RESTful API. The source code is released under the MIT license and is free for any personal or commercial project.
1.x.y
1: production-ready
x: breaking changes
y: new functionality or bug fixes in a backwards compatible manner
Version 1.6.x contains breaking changes!
Note: For version 1.4.5: v1.4.5
Go 1.19+
- MySQL
- PostgreSQL
- SQLite3
- Redis
- MongoDB
Note: gorest uses GORM as its ORM
- built on top of Gin
- use the supported databases without writing any extra configuration files
- environment variables using GoDotEnv
- CORS policy
- basic auth
- two-factor authentication
- JWT using golang-jwt/jwt
- password hashing with
Argon2id - JSON protection from hijacking
- simple firewall (whitelist/blacklist IP)
- email validation (pattern + MX lookup)
- email verification (sending verification code)
- forgotten password recovery
- render
HTMLtemplates - forward error logs and crash reports to sentry.io
- handle authentication tokens on client devices' cookies
- logout (individually enable option - delete tokens from cookies, ban active tokens)
- super easy to learn and use - lots of example codes
Please study the .env.sample file. It is one of the most crucial files required
to properly set up a new project. Please rename the .env.sample file to .env,
and set the environment variables according to your own instance setup.
Tutorials:
For version 1.6.x, please check the project in example
For version 1.4.x and 1.5.x, Wiki
- convention over configuration
import (
"github.com/gin-gonic/gin"
gconfig "github.com/pilinux/gorest/config"
gcontroller "github.com/pilinux/gorest/controller"
gdatabase "github.com/pilinux/gorest/database"
gmiddleware "github.com/pilinux/gorest/lib/middleware"
)- install a relational (SQLite3, MySQL or PostgreSQL), Redis, or Mongo database
- for 2FA, a relational + a redis database is required
- set up an environment to compile the Go codes (a quick tutorial for any Debian based OS)
- install
git - check the Wiki and example for tutorials and implementations
Note: For MySQL driver, please check issue: 7
Note For SQLite3:
DBUSER,DBPASS,DBHOSTandDBPORTenvironment variables should be left unchanged.DBNAMEmust contain the full path and the database file name; i.e,
/user/location/database.dbPlease see CONTRIBUTING to join this amazing project.
Please see this document.
© Mahir Hasan 2019 - 2023
Released under the MIT license