Skip to content

response

HTTP 响应对象,在 http.call.after 规则脚本中可用。

response 对象提供对 HTTP 响应数据的访问,并支持通过 discard() 控制重试。

可用性

规则变量
http.call.afterresponse

方法

方法返回类型说明
response.code()IntHTTP 状态码
response.headers()Map<String, List<String>>响应头
response.body()String?响应体(可空)
response.request()request关联的请求对象
response.discard()void丢弃此响应并重试请求
response.isDiscarded()Boolean检查此响应是否已被丢弃

重试机制

调用 response.discard() 会标记响应进行重试。请求将最多重新执行 3 次(MAX_RETRY)。当响应指示令牌过期或其他可恢复的错误时,此功能非常有用。

properties
http.call.after=groovy:```
if (response.code() == 401) {
    // 令牌过期,清除缓存的令牌并重试
    localStorage.remove("auth_token")
    response.discard()
}
```

示例

记录响应信息

properties
http.call.after=groovy:```
logger.info("Response code: " + response.code())
logger.info("Response body: " + response.body())
```

从响应中保存令牌

properties
http.call.after=groovy:```
if (response.code() == 200) {
    def body = new JsonSlurper().parseText(response.body())
    if (body.token) {
        localStorage.set("auth_token", body.token)
    }
}
```

错误处理与重试

properties
http.call.after=groovy:```
def code = response.code()
if (code >= 500) {
    logger.error("Server error: " + code)
    response.discard()
} else if (code == 401) {
    logger.warn("Unauthorized, retrying...")
    session.remove("token")
    response.discard()
}
```

从响应访问请求

properties
http.call.after=groovy:```
logger.info("Request to " + response.request().url() + " returned " + response.code())
```

相关链接

基于 Apache-2.0 许可发布