2016-01-08 124 views
1

在我的REST HTTP調用的Spring-boot項目中,我使用了org.springframework.web.client.RestTemplate。如何停止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; 
    } 
} 
+0

您確定RestTemplate是緩存而不是服務器本身? AFAIK如果你不配置緩存,RestTemplate不會自行完成。 – dunni

回答

0

你可以試試這個方式迫使無緩存請求中請求頭:

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

我有類似的問題,它能正常工作。