为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 golang 中缓存 http.Response?

如何在 golang 中缓存 http.Response?

Go
慕工程0101907 2021-11-08 19:17:48
req, err := http.NewRequest("GET", "http://example.com", nil)req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"})resp, err := client.Do(req)我需要在磁盘上缓存响应,并在从缓存恢复后将其类型保持为 http.Response。有任何想法吗?
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

最简单的方法是使用httputil.DumpResponsehttp.ReadResponse

有关示例,请参见此处。(您必须将代码复制到本地机器上并在那里运行,因为 Playground 不允许 I/O)

第一个将您收到的请求转储,也可以选择将正文转储到内存中的 [] 字节,然后您可以将其写入磁盘。稍后您可以从磁盘(或您存储它的任何位置)读取响应并将其包装在 bufio.Reader 中,然后将其传递给 http.ReadResponse。

ReadResponse 将 *http.Request 作为第二个参数,用作响应的 Request 字段的值。如果给出 nil,则返回的 Response 将在其 Request 字段中包含 GET 请求。


查看完整回答
反对 回复 2021-11-08
?
心有法竹

TA贡献1866条经验 获得超5个赞

...或使用https://github.com/lox/httpcache。一个符合 RFC7234 的 golang http.Handler,用于缓存 HTTP 响应


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 367 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信