支持配置哪些http code视作成功, 未指定, 默认 2xx 视为成功
This commit is contained in:
parent
ecf2bd6b55
commit
e8e02d9848
@ -45,6 +45,10 @@ func NewHttpClient(reqConfig *define.Request, cacheInstance cache.ICache) (*Http
|
|||||||
RetryBusinessCodeList: []string{},
|
RetryBusinessCodeList: []string{},
|
||||||
} // 未指定重试规则, 则使用默认重试规则
|
} // 未指定重试规则, 则使用默认重试规则
|
||||||
}
|
}
|
||||||
|
// 初始化成功的 http code list
|
||||||
|
if len(reqConfig.SuccessHttpCodeList) == 0 {
|
||||||
|
reqConfig.SuccessHttpCodeList = []int64{}
|
||||||
|
}
|
||||||
if len(reqConfig.Static) > 0 {
|
if len(reqConfig.Static) > 0 {
|
||||||
for loc, valMap := range reqConfig.Static {
|
for loc, valMap := range reqConfig.Static {
|
||||||
if len(valMap) == 0 {
|
if len(valMap) == 0 {
|
||||||
@ -294,6 +298,10 @@ func (hc *HttpClient) requestBackendApi() *define.Response {
|
|||||||
retryBusinessCodeTable[businessCode] = true
|
retryBusinessCodeTable[businessCode] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
successHttpCodeTable := make(map[int]bool)
|
||||||
|
for _, itemHttpCode := range hc.reqConfig.SuccessHttpCodeList {
|
||||||
|
successHttpCodeTable[itemHttpCode] = true
|
||||||
|
}
|
||||||
if response.RestyResponse, err = hc.request.Send(); nil != err {
|
if response.RestyResponse, err = hc.request.Send(); nil != err {
|
||||||
errType := define.RequestFailTypeSend
|
errType := define.RequestFailTypeSend
|
||||||
if err.Error() == resty.ErrRateLimitExceeded.Error() {
|
if err.Error() == resty.ErrRateLimitExceeded.Error() {
|
||||||
@ -331,8 +339,10 @@ func (hc *HttpClient) requestBackendApi() *define.Response {
|
|||||||
hc.fillResponseHeader(response)
|
hc.fillResponseHeader(response)
|
||||||
hc.fillResponseCookie(response)
|
hc.fillResponseCookie(response)
|
||||||
hc.fillResponseBody(response)
|
hc.fillResponseBody(response)
|
||||||
if response.HttpCode < http.StatusOK || response.HttpCode >= http.StatusMultipleChoices {
|
// 配置了当前code为成功, 或者未配置任何code, 当前code为2xx, 则认为请求成功
|
||||||
// 非 2xx
|
isHttpSuccess := successHttpCodeTable[response.HttpCode] || (len(successHttpCodeTable) == 0 && response.HttpCode/100 == 2)
|
||||||
|
if !isHttpSuccess {
|
||||||
|
// 非 成功
|
||||||
errType := define.RequestFailTypeServerError
|
errType := define.RequestFailTypeServerError
|
||||||
if response.HttpCode/100 == 4 {
|
if response.HttpCode/100 == 4 {
|
||||||
// 客户端错误
|
// 客户端错误
|
||||||
|
@ -33,6 +33,7 @@ type Request struct {
|
|||||||
CodeField string `json:"code_field"` // 业务状态码字段
|
CodeField string `json:"code_field"` // 业务状态码字段
|
||||||
MessageField string `json:"message_field"` // code描述字段
|
MessageField string `json:"message_field"` // code描述字段
|
||||||
DataReceiver any `json:"-"` // 响应data部分数据解析
|
DataReceiver any `json:"-"` // 响应data部分数据解析
|
||||||
|
SuccessHttpCodeList []int `json:"success_http_code_list"` // 哪些http状态码视为成功, 不配置, 默认2xx
|
||||||
SuccessCodeList []string `json:"success_code_list"` // 哪些业务状态码视为成功
|
SuccessCodeList []string `json:"success_code_list"` // 哪些业务状态码视为成功
|
||||||
ConnectTimeout int64 `json:"connect_timeout"` // 连接超时时间: ms
|
ConnectTimeout int64 `json:"connect_timeout"` // 连接超时时间: ms
|
||||||
ReadTimeout int64 `json:"read_timeout"` // 读取超时时间
|
ReadTimeout int64 `json:"read_timeout"` // 读取超时时间
|
||||||
|
Loading…
x
Reference in New Issue
Block a user