dex/vendor/github.com/gorilla/handlers
2016-04-08 11:56:29 -07:00
..
.travis.yml *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
canonical.go *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
canonical_test.go vendor: revendor using glide 2016-04-08 11:56:29 -07:00
compress.go *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
compress_test.go vendor: revendor using glide 2016-04-08 11:56:29 -07:00
doc.go *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
handlers.go *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
handlers_test.go vendor: revendor using glide 2016-04-08 11:56:29 -07:00
LICENSE *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
proxy_headers.go *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00
proxy_headers_test.go vendor: revendor using glide 2016-04-08 11:56:29 -07:00
README.md *: move ./Godeps/_workspace/src/ to ./vendor/ 2016-03-09 13:04:05 -08:00

gorilla/handlers

GoDoc Build Status

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:

  • LoggingHandler for logging HTTP requests in the Apache Common Log Format.
  • CombinedLoggingHandler for logging HTTP requests in the Apache Combined Log Format commonly used by both Apache and nginx.
  • CompressHandler for gzipping responses.
  • ContentTypeHandler for validating requests against a list of accepted content types.
  • MethodHandler for matching HTTP methods against handlers in a map[string]http.Handler
  • ProxyHeaders for populating r.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.
  • CanonicalHost for 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.