req, err := http.NewRequest("GET", "http://example.com", nil)
req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"})
resp, err := client.Do(req)
我需要缓存磁盘上的响应,并保持其类型为http。从缓存恢复后的响应。什么好主意吗?
最简单的方法是使用httputil。DumpResponse和http.ReadResponse.
请看这里的例子。(您必须将代码复制到本地机器上并在那里运行,因为Playground不允许I/O)
第一个将接收到的请求转储到内存中的[]字节,然后可以将其写入磁盘。稍后,您可以从磁盘(或存储它的任何地方)读取响应,并将其包装在bufio中。Reader,传递给http.ReadResponse.
ReadResponse接受一个*http。Request作为第二个参数,用作响应的Request字段的值。如果给定nil,则返回的响应将在其请求字段中包含GET请求。
…或使用https://github.com/lox/httpcache。一个RFC7234兼容的golang http。缓存HTTP响应的处理程序