Je commence à écrire des applications côté serveur dans Go. Je voudrais utiliser l'en-tête de demande Accept-Encoding pour déterminer s'il faut GZIP l'entité de réponse. J'avais espéré trouver un moyen de le faire directement en utilisant les méthodes http.Serve ou http.ServeFile.
Il s'agit d'une exigence assez générale; ai-je oublié quelque chose ou dois-je lancer ma propre solution?
Il n'y a pas encore de support "prêt à l'emploi" pour les réponses HTTP compressées par gzip. Mais l'ajouter est assez trivial. Jettes un coup d'oeil à
https://Gist.github.com/the42/1956518
aussi
https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/cgUp8_ATNtc
Le New York Times a publié son package middleware gzip pour Go .
Vous passez juste votre http.HandlerFunc
par le biais de leur GzipHandler
et vous avez terminé. Cela ressemble à ceci:
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)
}