欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中RestTemplate調(diào)用API的幾種常用寫法

 更新時間:2025年10月09日 09:55:17   作者:咖啡Beans  
本文介紹了RestTemplate調(diào)用http的幾種寫法,包括post+get,及傳遞參數(shù)的方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

摘要

本文介紹了RestTemplate調(diào)用http的幾種寫法,包括post+get,及傳遞參數(shù)的方式,讓我們拿下它。

可選配置

依賴坐標pom.xml

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>

<!-- 統(tǒng)一使用依賴注入 private final RestTemplate restTemplate; -->

自定義配置

package org.coffeebeans.resttemplate;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

/**
 * <li>ClassName: RestTemplateConfig </li>
 * <li>Author: OakWang </li>
 */
@Configuration
publicclassRestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setConnectTimeout(30000); // 連接超時時間(毫秒)
        factory.setReadTimeout(30000); // 讀取超時時間(毫秒)
        RestTemplate restTemplate = new RestTemplate(factory);
        MappingJackson2HttpMessageConverterjsonConverter = new MappingJackson2HttpMessageConverter();
        restTemplate.getMessageConverters().add(jsonConverter);// 添加JSON消息轉(zhuǎn)換器
        return restTemplate;
    }
}

實現(xiàn)get請求

  • GET+空參
String requestUrl = "https://jsonplaceholder.typicode.com/posts/1";
ResponseEntity<String> response = restTemplate.getForEntity(requestUrl, String.class);
if (Objects.equals(HttpStatus.OK, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • GET+單參
String requestUrl = "https://jsonplaceholder.typicode.com/posts/{id}";
ResponseEntity<String> response = restTemplate.getForEntity(requestUrl, String.class, 1); // 參數(shù)值為 1
if (Objects.equals(HttpStatus.OK, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • GET+多參-方式1
String requestUrl = "https://jsonplaceholder.typicode.com/comments?id={id}&email={email}";
Map<String, Object> params = new HashMap<>();
params.put("id", 1);
params.put("email", "Eliseo@gardner.biz");
ResponseEntity<String> response = restTemplate.getForEntity(requestUrl, String.class, params);
if (Objects.equals(HttpStatus.OK, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • GET+多參-方式2
String requestUrl = UriComponentsBuilder.fromHttpUrl("https://jsonplaceholder.typicode.com/posts/1/comments")
        .queryParam("id", "3")
        .queryParam("email", "Nikita@garfield.biz")
        .toUriString();
ResponseEntity<String> response = restTemplate.getForEntity(requestUrl, String.class);
if (Objects.equals(HttpStatus.OK, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}

實現(xiàn)post請求

  • POST+空參
String requestUrl = "https://jsonplaceholder.typicode.com/posts";
ResponseEntity<Object> response = restTemplate.postForEntity(requestUrl, null, Object.class);
if (Objects.equals(HttpStatus.CREATED, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • POST+JSON 實體對象參數(shù)
String requestUrl="https://jsonplaceholder.typicode.com/posts";

List<MyEntity> entityList = new ArrayList<>(); //對象參數(shù)
entityList.add(MyEntity.builder().title("foo").body("bar").userId("1").build());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "");
HttpEntity<Object> requestEntity = new HttpEntity<>(entityList, headers);

ResponseEntity<Object> response = restTemplate.postForEntity(requestUrl, requestEntity, Object.class);
if (Objects.equals(HttpStatus.CREATED, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • POST+JSON 對象參數(shù)
String requestUrl="https://jsonplaceholder.typicode.com/posts";

Map<String, String> params = new HashMap<>();
params.put("title", "foo");
params.put("body", "bar");
params.put("userId", "1");
MultiValueMap<String, String> form = new LinkedMultiValueMap<>();
for (Map.Entry<String, String> entry : params.entrySet()) {
    form.add(entry.getKey(), entry.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(form, headers);
ResponseEntity<Object> response = restTemplate.postForEntity(requestUrl, requestEntity, Object.class);
if (Objects.equals(HttpStatus.CREATED, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • POST+表單提交
String requestUrl="https://";
// 1. 初始化參數(shù)
Map<String, String> params = new HashMap<>();
params.put("title", "foo");
// 2. 構(gòu)造 MultiValueMap
MultiValueMap<String, String> form = new LinkedMultiValueMap<>();
for (Map.Entry<String, String> entry : params.entrySet()) {
    form.add(entry.getKey(), entry.getValue());
}
// 3. 設(shè)置請求頭
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 4. 發(fā)送請求 返回Object或者指定類型
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(form, headers);
ResponseEntity<Object> response = restTemplate.postForEntity(requestUrl, requestEntity, Object.class);
//5.處理結(jié)果
if (Objects.equals(HttpStatus.OK, response.getStatusCode())) {
    log.info("請求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}

總結(jié)

以上我們整理了RestTemplate調(diào)用接口的幾種用法,包括post+get,空參、單參、多參的使用場景。

到此這篇關(guān)于Java中RestTemplate調(diào)用API的幾種常用寫法的文章就介紹到這了,更多相關(guān)Java RestTemplate調(diào)用API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis 新增返回id的實現(xiàn)

    mybatis 新增返回id的實現(xiàn)

    Mybatis插入數(shù)據(jù)時,可以通過兩種方式返回生成的ID,兩種方式都需要在實體類中提供userId的getter和setter方法,本文就詳細的介紹一下這兩種方法,感興趣的可以了解一下
    2024-09-09
  • idea如何自定義代碼模板

    idea如何自定義代碼模板

    這篇文章主要介紹了idea如何自定義代碼模板問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MyBatisPlus超詳細分析條件查詢

    MyBatisPlus超詳細分析條件查詢

    這篇文章主要介紹了MyBatisPlus條件查詢的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java缺失區(qū)間的查找方法

    Java缺失區(qū)間的查找方法

    在 Java 的算法世界里,有許多有趣又具有挑戰(zhàn)性的問題等待我們?nèi)ヌ剿?今天,跟著小編一起來深入研究缺失區(qū)間的查找秘籍,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2025-02-02
  • 教你用Java在個人電腦上實現(xiàn)微信掃碼支付

    教你用Java在個人電腦上實現(xiàn)微信掃碼支付

    今天給大家?guī)淼氖荍ava實戰(zhàn)的相關(guān)知識,文章圍繞著Java在個人電腦上實現(xiàn)微信掃碼支付展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java實戰(zhàn)之制作在線音樂網(wǎng)站

    Java實戰(zhàn)之制作在線音樂網(wǎng)站

    這篇文章主要介紹了如何通過Java實現(xiàn)一個精美風(fēng)的在線音樂網(wǎng)站,文章采用到了JSP、JQuery、Ajax等技術(shù),感興趣的小伙伴可以了解一下
    2022-02-02
  • java隨機數(shù)生產(chǎn)算法實例

    java隨機數(shù)生產(chǎn)算法實例

    下面小編就為大家?guī)硪黄猨ava隨機數(shù)生產(chǎn)算法實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 基于Spring@Autowired注解與自動裝配詳談

    基于Spring@Autowired注解與自動裝配詳談

    下面小編就為大家?guī)硪黄赟pring@Autowired注解與自動裝配詳談。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java學(xué)習(xí)筆記之異常處理

    Java學(xué)習(xí)筆記之異常處理

    這篇文章主要為大家詳細介紹了Java學(xué)習(xí)筆記之異常處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Java獲取文件夾下所有文件名稱的方法示例

    Java獲取文件夾下所有文件名稱的方法示例

    這篇文章主要介紹了Java獲取文件夾下所有文件名稱的方法,涉及java針對文件與目錄相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06

最新評論