/
router.go
37 lines (32 loc) · 1.01 KB
/
router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package net
import (
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-chi/render"
"net/http"
)
// DefaultMiddlewares groups a set of middlewares used across different services.
var DefaultMiddlewares = []Middleware{
middleware.RequestID,
middleware.RealIP,
middleware.Logger,
middleware.Recoverer,
render.SetContentType(render.ContentTypeJSON),
}
// Middleware is function that gets executed before each HTTP handler.
// It's useful for adding request-specific logic to every request like logging and setting request id.
type Middleware func(handler http.Handler) http.Handler
// NewRouter initializes a new HTTP router using chi.
// It also loads middlewares used on every incoming HTTP request.
func NewRouter(middlewares ...Middleware) chi.Router {
r := chi.NewRouter()
for _, m := range middlewares {
r.Use(m)
}
return r
}
// RoutesGetter holds a method to get routes.
type RoutesGetter interface {
// Routes returns a set of routes in a http.Handler form.
Routes() http.Handler
}