This is a simple GoLang server implemented using Echo meant to be a starting point when implementing a backend.
It offers the following functionality:
- JWT authentication that can be configured inside the code.
Also you can define which routes to be excluded from the check by changing
auth.Excluded
e.Use(middleware.JWTWithConfig(middleware.JWTConfig{
Claims: &auth.JWTClaims{},
SigningKey: []byte("<CHANGE ME>"),
SigningMethod: "HS512",
Skipper: func(c echo.Context) bool {
return utils.Contains(auth.Excluded, c.Path())
},
}))
- CORS implementation. Consider changing
AllowOrigins
in production.
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowMethods: []string{http.MethodGet, http.MethodHead, http.MethodPut, http.MethodPatch, http.MethodPost, http.MethodDelete},
Skipper: func(c echo.Context) bool {
return true
},
}))
- CSRF implementation to prevent cross site request forgery.
e.Use(middleware.CSRFWithConfig(middleware.CSRFConfig{
TokenLength: 32,
TokenLookup: "header:" + echo.HeaderXCSRFToken,
ContextKey: "csrf",
CookieName: "_csrf",
CookieMaxAge: 86400,
Skipper: func(c echo.Context) bool {
return true
},
}))
- Logging of information.
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Format: "method=${method}, uri=${uri}, status=${status}\n",
}))
Below you can find the basic routes of the server:
INDEX = "/"
METRICS = INDEX + "metrics"
ROOT = INDEX + "v1/"
MESSAGE = ROOT + "message"
In order ot start the service run the file cmd/backend/main.go
. Please note
that the server runs on port :1323