Go middleware collection created with hypermedia applications in mind.
ctxlog: Structured request loggingrecoverer: Panic recovery withrequestsize: Request body size limitingcontenttype: Content type filteringerrs: Error handling utilitieshandlers: Helper for composing middleware
package main
import (
"net/http"
"github.com/fivethirty/middest/handlers"
"github.com/fivethirty/middest/ctxlog"
"github.com/fivethirty/middest/recoverer"
)
func main() {
logger := ctxlog.DefaultLogger
middlewares := []func(http.Handler) http.Handler{
recoverer.New(logger),
ctxlog.New(logger),
}
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("Hello, World!"))
})
http.HandleFunc("/", handlers.WithMiddleware(middlewares, handler))
http.ListenAndServe(":8080", nil)
}