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請求相關方法的使用方式,你是否有所收獲呢?