中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RestTemplate怎么調用POST和GET請求

發布時間:2023-03-31 11:33:02 來源:億速云 閱讀:127 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“RestTemplate怎么調用POST和GET請求”,內容詳細,步驟清晰,細節處理妥當,希望這篇“RestTemplate怎么調用POST和GET請求”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

在日常開發過程中,http接口不僅提供給前端調用,有的時候還需要提供給其他業務方調用,在后臺調用http請求的時候,我們一般使用Http Client客戶端調用,java常用的Http客戶端有:

  • java原生的HttpURLConnection

  • Apache http client

  • OkHttp

  • RestTemplate

在RestTemplate中,對同一種請求方式,一般有兩種調用方法:

  • xxForObject

    • 返回一個指定類型的對象,通常是響應體反序列化后的java對象

    • 只返回反序列化的java對象,沒有額外的http相應信息,只知道請求是否成功。

  • xxForEntity

    • 返回的是一個ResponseEntity對象,其中包含完整的http響應信息(狀態碼、響應頭、響應體)

一、POST請求調用

  • postForObject

/**
    String/URI url: 請求的URL路徑
    request: 一般設置請求頭和請求體
    responseType:請求完成之后返回的結果類型
    Map<String, ?>/Object... uriVariables: 用來拼接請求url,可以是Map<String, ?>類型或Object類型可變參數
**/
postForObject/postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)

eg:
void fun() {
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON);
    MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
    HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
    // 注意,如果想要使用可變參數來拼接url,那這里的url一定要使用占位符{}替換,并且名稱要和可變參數名稱一樣才能在運行時將占位符位置替換成傳入動態參數【可變參數也可以不傳,那么這里的url就不需要占位符拼接】
    String url = "http://www.sea.com?uid={uid}&username={username}";
    String uid = "123";
    String username = "sea";
    // 因為responseType用的是String類型,所以返回的是一個String類型字符串
    String result = restTemplate.postForObject(url, httpEntity, String.class, uid, username);
}

postForObject/postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)

eg:
void fun() {
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON);
    MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
    HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
    // 注意,如果想要使用可變參數來拼接url,那這里的url一定要使用占位符{}替換,并且名稱要和可變參數名稱一樣才能在運行時將占位符位置替換成傳入動態參數
    String url = "http://www.sea.com?uid={uid}&username={username}";
    Map<String, Object> params = new HashMap<>();
    String uid = "123";
    String username = "sea";
    params.put("uid", uid);
    params.put("username", username)
    // 因為responseType用的是String類型,所以返回的是一個String類型字符串
    String result = restTemplate.postForObject(url, httpEntity, String.class, params);
}

postForObject/postForEntity(URI url, Object request, Class<T> responseType)

eg:
void fun() {
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON);
    MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
    HttpEntity<String> httpEntity = new HttpEntity<>(params, headers);
    String url = "http://www.sea.com";
    MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();
    multiValueMap.put("uid", 123);
    multiValueMap.put("username", "sea");
    // 不再使用可變參數綁定url,直接傳入綁定后的uri參數
    URI uri = UriComponentsBuilder.fromHttpUrl(url).queryParams(multiValueMap).build().encode().toUri();
    // 因為responseType用的是String類型,所以返回的是一個String類型字符串
    String result = restTemplate.postForObject(uri, httpEntity, String.class);
}


eg: xxforEntity()
void fun() {
    Map<String, Object> map = new HashMap<>();
    map.put("uid", 123);
    map.put("username", "sea");
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<HashMap<String, Object>> httpEntity = new HttpEntity<>(map, headers);
    String url = "http://www.sea.com";
    // 使用xxforEntity,返回的是一個ResponseEntity,里面包含了statusCode(狀態碼)、Headers(響應頭)、body(響應體)
    ResponseEntity<String> responseEntity = restTemplate.postForEntity(uri, httpEntity, String.class);
}

二、GET請求調用

getForObject/getForEntity(String url, Class<T> responseType, Object... uriVariables)

getForObject/getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables)

getForObject/getForEntity(URI url, Class<T> responseType)

在get請求調用中,除了請求參數中少了Object request【請求頭和請求體】,其他的參數和方法調用同上面post的方法調用是一樣的

三、Exchange調用

exchange調用可以理解為是一個萬能調用,不特定是post還是get類型調用,請求方式由調用者指定。 ps:如果在get請求中需要指定請求頭和請求體,而getForXX又不支持方法又不支持設置請求頭,此時可以改成用exchange方法來調用,自己往HttpEntity<?> requestEntity參數中設置請求頭和體。

讀到這里,這篇“RestTemplate怎么調用POST和GET請求”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乳山市| 改则县| 英吉沙县| 象州县| 苗栗县| 峨眉山市| 宜兰县| 班戈县| 东乡族自治县| 永安市| 井冈山市| 五大连池市| 建湖县| 留坝县| 宜章县| 铜山县| 阳江市| 张家口市| 五家渠市| 郓城县| 汝城县| 尼玛县| 玛沁县| 崇礼县| 浙江省| 五河县| 邵武市| 泰安市| 东宁县| 海林市| 徐汇区| 阿拉善左旗| 锡林郭勒盟| 平度市| 涞源县| 图木舒克市| 宁河县| 安塞县| 桃源县| 舒城县| 沈阳市|