Подтвердить что ты не робот

Обслуживание gzip-контента для Go

Я начинаю писать серверные приложения в Go. Я хотел бы использовать заголовок запроса Accept-Encoding, чтобы определить, должен ли GZIP объект ответа. Я надеялся найти способ сделать это напрямую, используя методы http.Serve или http.ServeFile.

Это довольно общее требование; я что-то пропустил или мне нужно катить свое решение?

4b9b3361

Ответ 2

The New York Times выпустили пакет промежуточного программного обеспечения gzip для Go.

Вы просто передаете http.HandlerFunc через их GzipHandler, и все готово. Это выглядит так:

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)
}