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:
map[string]http.Handlerr.RemoteAddr and r.URL.Scheme based on the X-Forwarded-For, X-Real-IP, X-Forwarded-Proto and RFC7239 Forwarded headers 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.