如何停止 org.springframework.web.client.RestTemplate 缓存响应?

Ren*_*tin 6 spring caching resttemplate

在用于 REST HTTP 调用的 Spring-boot 项目中,我使用的是 org.springframework.web.client.RestTemplate。

问题在于它正在缓存响应,这意味着当我第一次调用它时,我得到了正确的响应,但是当我更新与当前 API 相关的服务器上的数据以及第二次调用相同的 API 时,它仍然返回给我旧的响应,所以它可能是ResponseEntity<T>从缓存中获取的?我不确定.. 每次调用相同的 API 时如何获得最新版本的响应?

这是我如何进行 HTTP 调用

public <T> ResponseEntity<T> doQueryApi(String url, HttpMethod httpMethod, Object anyObject, HttpHeaders requestHeaders, Class<T> responseType) throws RestClientException {

        HttpEntity requestEntity = new HttpEntity(anyObject, requestHeaders);
        RestTemplate restTemplate = new RestTemplate();

        ResponseEntity<T> responseEntity = restTemplate.exchange(url, httpMethod, requestEntity, responseType);
        return responseEntity;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jor*_*rge 3

您可以尝试通过以下方式在请求标头中强制执行无缓存请求:

// Force the request expires
requestHeaders.setExpires(0);
// Cache-Control: private, no-store, max-age=0
requestHeaders.setCacheControl("private, no-store, max-age=0");
Run Code Online (Sandbox Code Playgroud)

我遇到了类似的问题并且效果很好。