背景
问题背景:
- 当带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库帮我们做了一次拷贝。由于它已经做了,就不必我们再去做一次。