Package handlers is a collection of handlers (aka "HTTP middleware") for use
with Go's net/http package (or any framework supporting http.Handler), including:
LoggingHandlerfor logging HTTP requests in the Apache Common Log Format.CombinedLoggingHandlerfor logging HTTP requests in the Apache Combined Log Format commonly used by both Apache and nginx.CompressHandlerfor gzipping responses.ContentTypeHandlerfor validating requests against a list of accepted content types.MethodHandlerfor matching HTTP methods against handlers in amap[string]http.HandlerProxyHeadersfor populatingr.RemoteAddrandr.URL.Schemebased on theX-Forwarded-For,X-Real-IP,X-Forwarded-Protoand RFC7239Forwardedheaders when running a Go server behind a HTTP reverse proxy.
Other handlers are documented on the Gorilla website.
A simple example using handlers.LoggingHandler and handlers.CompressHandler:
import (
"net/http"
"github.com/gorilla/handlers"
)
func main() {
r := http.NewServeMux()
// Only log requests to our admin dashboard to stdout
r.Handle("/admin", handlers.LoggingHandler(os.Stdout, http.HandlerFunc(ShowAdminDashboard)))
r.HandleFunc("/", ShowIndex)
// Wrap our server with our gzip handler to gzip compress all responses.
http.ListenAndServe(":8000", handlers.CompressHandler(r))
}BSD licensed. See the included LICENSE file for details.