web-dev-qa-db-ja.com

Go用のgzip圧縮されたコンテンツの提供

Goでサーバー側のアプリケーションを書き始めています。 Accept-Encoding要求ヘッダーを使用して、応答エンティティをGZIPするかどうかを判断したいと思います。私は、http.Serveまたはhttp.ServeFileメソッドを使用してこれを直接行う方法を見つけたいと思っていました。

これは非常に一般的な要件です。何かを見逃したか、独自のソリューションを展開する必要がありますか?

37
Rick-777

Gzipで圧縮されたHTTP応答の「すぐに使える」サポートはまだありません。ただし、追加するのは非常に簡単です。見て

https://Gist.github.com/the42/1956518

また

https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/cgUp8_ATNtc

20
rputikar

New York Timesは Go用gzipミドルウェアパッケージ をリリースしました。

http.HandlerFuncGzipHandlerに渡すだけで完了です。次のようになります。

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)
}
21
Moshe Revah