mirror of
https://github.com/go-gitea/gitea.git
synced 2024-12-05 00:44:12 +08:00
9fe4437bda
* Use vendored go-swagger * vendor go-swagger * revert un wanteed change * remove un-needed GO111MODULE * Update Makefile Co-Authored-By: techknowlogick <matti@mdranta.net>
2.7 KiB
2.7 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:
- 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
andr.URL.Scheme
based on the
X-Forwarded-For
,X-Real-IP
,X-Forwarded-Proto
and RFC7239Forwarded
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). - RecoveryHandler for recovering from unexpected panics.
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.