Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gorilla/handlers
Package gorilla/handlers is a collection of useful middleware for Go HTTP services & web applications 🛃
https://github.com/gorilla/handlers
go golang gorilla gorilla-web-toolkit handler http middleware
Last synced: 3 days ago
JSON representation
Package gorilla/handlers is a collection of useful middleware for Go HTTP services & web applications 🛃
- Host: GitHub
- URL: https://github.com/gorilla/handlers
- Owner: gorilla
- License: bsd-3-clause
- Created: 2013-02-01T03:53:49.000Z (almost 12 years ago)
- Default Branch: main
- Last Pushed: 2024-02-20T16:27:20.000Z (10 months ago)
- Last Synced: 2024-10-29T17:09:46.634Z (about 1 month ago)
- Topics: go, golang, gorilla, gorilla-web-toolkit, handler, http, middleware
- Language: Go
- Homepage: https://gorilla.github.io
- Size: 170 KB
- Stars: 1,662
- Watchers: 31
- Forks: 270
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- go-awesome - handlers - A collection of useful handlers for Go's `net/http` package (Open source library / Middleware)
README
# gorilla/handlers
![Testing](https://github.com/gorilla/handlers/actions/workflows/test.yml/badge.svg)
[![Codecov](https://codecov.io/github/gorilla/handlers/branch/main/graph/badge.svg)](https://codecov.io/github/gorilla/handlers)
[![GoDoc](https://godoc.org/github.com/gorilla/handlers?status.svg)](https://godoc.org/github.com/gorilla/handlers)
[![Sourcegraph](https://sourcegraph.com/github.com/gorilla/handlers/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/handlers?badge)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**](https://godoc.org/github.com/gorilla/handlers#LoggingHandler) for logging HTTP requests in the Apache [Common Log
Format](http://httpd.apache.org/docs/2.2/logs.html#common).
* [**CombinedLoggingHandler**](https://godoc.org/github.com/gorilla/handlers#CombinedLoggingHandler) for logging HTTP requests in the Apache [Combined Log
Format](http://httpd.apache.org/docs/2.2/logs.html#combined) commonly used by
both Apache and nginx.
* [**CompressHandler**](https://godoc.org/github.com/gorilla/handlers#CompressHandler) for gzipping responses.
* [**ContentTypeHandler**](https://godoc.org/github.com/gorilla/handlers#ContentTypeHandler) for validating requests against a list of accepted
content types.
* [**MethodHandler**](https://godoc.org/github.com/gorilla/handlers#MethodHandler) for matching HTTP methods against handlers in a
`map[string]http.Handler`
* [**ProxyHeaders**](https://godoc.org/github.com/gorilla/handlers#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**](https://godoc.org/github.com/gorilla/handlers#CanonicalHost) for re-directing to the preferred host when handling multiple
domains (i.e. multiple CNAME aliases).
* [**RecoveryHandler**](https://godoc.org/github.com/gorilla/handlers#RecoveryHandler) for recovering from unexpected panics.Other handlers are documented [on the Gorilla
website](https://www.gorillatoolkit.org/pkg/handlers).## Example
A simple example using `handlers.LoggingHandler` and `handlers.CompressHandler`:
```go
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.