forked from Shiloh/githaven
57 lines
1.1 KiB
Markdown
57 lines
1.1 KiB
Markdown
|
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.
|
||
|
|
||
|
## Install
|
||
|
```bash
|
||
|
go get -u github.com/NYTimes/gziphandler
|
||
|
```
|
||
|
|
||
|
## 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
|