第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Gzip 未壓縮的 http.Response.Body

Gzip 未壓縮的 http.Response.Body

Go
猛跑小豬 2021-10-18 14:23:26
我正在構(gòu)建一個(gè) Go 應(yīng)用程序,它接受一個(gè)http.Response對(duì)象并將其(響應(yīng)頭和正文)保存到 redis 哈希中。當(dāng)應(yīng)用程序收到一個(gè)http.Response.Body未壓縮的文件時(shí),我想在將其保存到緩存之前對(duì)其進(jìn)行 gzip。我的困惑源于我無法清楚地了解 Go 的io接口,以及如何在http.Response.Body'sio.ReadCloser和 gzip之間進(jìn)行協(xié)商Writer。我想這里有一個(gè)優(yōu)雅的流媒體解決方案,但我無法讓它發(fā)揮作用。
查看完整描述

1 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

v

如果你已經(jīng)確定身體無壓縮,如果你需要一個(gè)[]byte壓縮的數(shù)據(jù)(而不是例如已經(jīng)有一個(gè)io.Writer你可以寫,例如,如果你想身體保存到一個(gè)文件,那么你會(huì)希望流到文件而不是緩沖區(qū))然后這樣的事情應(yīng)該工作:


func getCompressedBody(r *http.Response) ([]byte, error) {

    var buf bytes.Buffer

    gz := gzip.NewWriter(&buf)

    if _, err := io.Copy(gz, r.Body); err != nil {

        return nil, err

    }

    err := gz.Close()

    return buf.Bytes(), err

}

(這只是一個(gè)例子,可能是內(nèi)聯(lián)的,而不是作為一個(gè)函數(shù);如果你想要它作為一個(gè)函數(shù),那么它可能應(yīng)該使用 anio.Reader而不是 an *http.Response)。


查看完整回答
反對(duì) 回復(fù) 2021-10-18
  • 1 回答
  • 0 關(guān)注
  • 205 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)