背景

问题背景:

  1. 当带body请求发出去返回错误,重试时body需要重新赋值,避免产生http请产生内部错误

示例如下

if r.GetBody != nil {

request.Body, err = request.GetBody()
if err != nil {

span.Warnf("lb.doCtx: retry failed, try times: %d, code: %d, err: %v, host: %s",
i+1, code, err, host)
return
}
continue // 继续重试
}
// 为空时,我们需要手动重置body

一般来说,由golang原生库生成的body,都会默认支持Getbody(),其实只是http库帮我们做了一次拷贝。由于它已经做了,就不必我们再去做一次。