23a6ad9356
The need has been spotted in issue https://github.com/hashicorp/consul/issues/3687. Using "NYTimes/gziphandler", the http api responses can now be compressed if required. The Go API requires compressed response if possible and handle the compressed response. We here change only the http api (not the UI for instance).
53 lines
1.1 KiB
Markdown
53 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.
|
|
|
|
|
|
## 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
|