2.0 KiB
2.0 KiB
gorilla/handlers
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.CanonicalHostfor re-directing to the preferred host when handling multiple domains (i.e. multiple CNAME aliases).
Other handlers are documented on the Gorilla website.
Example
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))
}
License
BSD licensed. See the included LICENSE file for details.