2 回答

TA贡献1847条经验 获得超7个赞
您的函数是一个处理程序Func
,其中包含接口,在您的情况下它是 。ResponseWriter
w
因此,您可以使用 :http.ResponseWriter
func Fetch(w http.ResponseWriter, r *http.Request) {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest", nil)
if err != nil {
log.Print(err)
os.Exit(1)
}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request to server")
os.Exit(1)
}
respBody, _ := ioutil.ReadAll(resp.Body)
// Here:
w.WriteHeader(resp.StatusCode)
w.Write(respBody)
}
你可以使用使用代替,记得关闭身体使用。io.Copy(w, resp.Body)defer resp.Body.Close()

TA贡献2019条经验 获得超9个赞
您只需将响应正文的内容复制到响应编写器:
io.Copy(w,resp.Body)
由于您只能读取一次身体,因此上面的解决方案将不允许您获得身体。如果您还想记录它,或者以某种方式处理它,则可以读取它,然后将其写入响应编写器。
respBody, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(respBody))
w.Write(respBody)
- 2 回答
- 0 关注
- 93 浏览
添加回答
举报