天天看點

如何正确使用RestTemplate【十一】

RestTemplate階段性突破

之前幾篇文章我們簡單介紹了RestTemplate中針對不同幾個請求方式提供的一些固定方法,那麼我們能不能自己去指定相應的請求來調用請求呢?

答案是一定的,其實在那些固定方法中同樣也是調用的自定義方法來執行的,接下來我們的任務就是學習一下RestTemplate中的exchange方法和execute方法。

本篇文章先就exchange方法進行講解。

exchange方法參數分析

共有參數介紹:

url:通路連結Url,不過多解釋。

method:通路請求類型

requestEntity:通路請求傳遞資源

Class<T> responseType:傳回參數類型class

uriVariables:url關聯的一些參數

ParameterizedTypeReference<T> responseType:傳回參數化類型,這個大家可以自行找些資料看一下,一句兩句說不明白。

exchange方法

exchange類方法足足有八個方法對外公開,其中的參數大緻相同,學習起來并不難。

exchange方法是一個通用方法,目前支援的請求是GET/POST/PUT/DELETE等四種請求方式,下面來看一下具體的方法吧。

1.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables)

此方法需要傳輸url、請求類型、請求資源對象、傳回值類型、參數值五個參數,直接上代碼示例:

User user = new User(1, 'username', 22);
ResponseEntity<List> entity = restTemplate.exchange(url, HttpMethod.POST, user, List.class, "first param","two param");      

2.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables)

此方法需要傳輸url、請求類型、請求資源對象、傳回值類型、map參數值五個參數,直接上代碼示例:

Map<String,String> map = new HashMap<>;
map.put("Frist","first param");
map.put("Two","two param");
User user = new User(1, 'username', 22);
ResponseEntity<List> entity = restTemplate.exchange(url, HttpMethod.POST, user, List.class, map);      

3.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType)

此方法需要傳輸url、請求類型、請求資源對象、傳回值類型五個參數,直接上代碼示例:

User user = new User(1, 'username', 22);
ResponseEntity<List> entity = restTemplate.exchange(url, HttpMethod.POST, user, List.class);      

4.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables)

與上面的相同,隻是傳入參數略有不同,就不細說了。

5.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables)

6.

public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)

7.

public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, Class<T> responseType)

這個方法有些不一樣,所有的參數都被封裝到了requestEntity對象中傳入進去,但是并沒有太難了解。

8.

public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)

這個跟上一個相同了,不再贅述了。

小結

今天我們又學習了exchange請求相關方法的使用方式,你是否有所收獲呢?

繼續閱讀