2018-05-31 16:42:08 +00:00
|
|
|
Gzip Handler
|
|
|
|
============
|
|
|
|
|
|
|
|
This is a tiny Go package which wraps HTTP handlers to transparently gzip the
|
|
|
|
response body, for clients which support it. Although it's usually simpler to
|
|
|
|
leave that to a reverse proxy (like nginx or Varnish), this package is useful
|
|
|
|
when that's undesirable.
|
|
|
|
|
2018-10-03 16:55:26 +00:00
|
|
|
## Install
|
|
|
|
```bash
|
|
|
|
go get -u github.com/NYTimes/gziphandler
|
|
|
|
```
|
2018-05-31 16:42:08 +00:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Call `GzipHandler` with any handler (an object which implements the
|
|
|
|
`http.Handler` interface), and it'll return a new handler which gzips the
|
|
|
|
response. For example:
|
|
|
|
|
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
"net/http"
|
|
|
|
"github.com/NYTimes/gziphandler"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
withoutGz := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
w.Header().Set("Content-Type", "text/plain")
|
|
|
|
io.WriteString(w, "Hello, World")
|
|
|
|
})
|
|
|
|
|
|
|
|
withGz := gziphandler.GzipHandler(withoutGz)
|
|
|
|
|
|
|
|
http.Handle("/", withGz)
|
|
|
|
http.ListenAndServe("0.0.0.0:8000", nil)
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
|
|
|
The docs can be found at [godoc.org][docs], as usual.
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
[Apache 2.0][license].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[docs]: https://godoc.org/github.com/nytimes/gziphandler
|
|
|
|
[license]: https://github.com/nytimes/gziphandler/blob/master/LICENSE.md
|