最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

摘要

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

可選配置

依賴坐標(biāo)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); // 連接超時(shí)時(shí)間(毫秒)
        factory.setReadTimeout(30000); // 讀取超時(shí)時(shí)間(毫秒)
        RestTemplate restTemplate = new RestTemplate(factory);
        MappingJackson2HttpMessageConverterjsonConverter = new MappingJackson2HttpMessageConverter();
        restTemplate.getMessageConverters().add(jsonConverter);// 添加JSON消息轉(zhuǎn)換器
        return restTemplate;
    }
}

實(shí)現(xiàn)get請(qǐng)求

  • 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("請(qǐng)求響應(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("請(qǐng)求響應(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("請(qǐng)求響應(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("請(qǐng)求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}

實(shí)現(xiàn)post請(qǐng)求

  • 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("請(qǐng)求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • POST+JSON 實(shí)體對(duì)象參數(shù)
String requestUrl="https://jsonplaceholder.typicode.com/posts";

List<MyEntity> entityList = new ArrayList<>(); //對(duì)象參數(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("請(qǐng)求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}
  • POST+JSON 對(duì)象參數(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("請(qǐng)求響應(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è)置請(qǐng)求頭
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 4. 發(fā)送請(qǐng)求 返回Object或者指定類(lèi)型
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("請(qǐng)求響應(yīng)結(jié)果: {}, {}", requestUrl, response.getBody());
    // 解析...
}

總結(jié)

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

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

相關(guān)文章

  • SpringBoot之@Aspect注解解讀

    SpringBoot之@Aspect注解解讀

    這篇文章主要介紹了SpringBoot之@Aspect注解解讀,AOP是面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù),而@Aspect 就是把一個(gè)類(lèi)定義為切面供容器讀取,需要的朋友可以參考下
    2024-01-01
  • Java中的static關(guān)鍵字修飾屬性和方法(推薦)

    Java中的static關(guān)鍵字修飾屬性和方法(推薦)

    這篇文章主要介紹了Java中的static關(guān)鍵字修飾屬性和方法,包括哪些成員屬性可以被static修飾,靜態(tài)屬性的訪問(wèn)方法示例詳解,需要的朋友可以參考下
    2022-04-04
  • java實(shí)現(xiàn)人員信息管理系統(tǒng)

    java實(shí)現(xiàn)人員信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)人員信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 解決Java Calendar類(lèi)set()方法的陷阱

    解決Java Calendar類(lèi)set()方法的陷阱

    這篇文章主要介紹了解決Java Calendar類(lèi)set()方法的陷阱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • SpringBoot項(xiàng)目中resources文件讀取實(shí)踐

    SpringBoot項(xiàng)目中resources文件讀取實(shí)踐

    本文詳細(xì)介紹了SpringBoot項(xiàng)目中讀取resources目錄下文件的9種主流方式,并提供了一個(gè)完整的控制器Demo示例,幫助開(kāi)發(fā)者快速定位最適合的資源加載方案
    2026-01-01
  • 關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用

    關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用

    這篇文章主要介紹了關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用,SpringMVC是一個(gè)基于Spring框架的Web框架,它提供了一種簡(jiǎn)單、靈活的方式來(lái)開(kāi)發(fā)Web應(yīng)用程序,在開(kāi)發(fā)Web應(yīng)用程序時(shí),我們需要將用戶提交的數(shù)據(jù)綁定到我們的Java對(duì)象上,需要的朋友可以參考下
    2023-07-07
  • 監(jiān)聽(tīng)器獲取Spring配置文件的方法

    監(jiān)聽(tīng)器獲取Spring配置文件的方法

    這篇文章主要為大家詳細(xì)介紹了監(jiān)聽(tīng)器獲取Spring配置文件的方法,很實(shí)用的方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • java SpringMVC學(xué)習(xí)使用詳解

    java SpringMVC學(xué)習(xí)使用詳解

    本篇文章主要介紹了java SpringMVC——如何獲取請(qǐng)求參數(shù)詳解,詳細(xì)的介紹了每種參數(shù)注解的用法及其實(shí)例。感興趣的小伙伴們可以參考一下
    2017-04-04
  • springboot獲取resources下static目錄的位置

    springboot獲取resources下static目錄的位置

    這篇文章主要為大家詳細(xì)介紹了springboot獲取resources下static目錄的位置的三種常用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-12-12
  • 關(guān)于Java錯(cuò)誤提示之找不到或無(wú)法加載主類(lèi)的問(wèn)題及正確處理方法

    關(guān)于Java錯(cuò)誤提示之找不到或無(wú)法加載主類(lèi)的問(wèn)題及正確處理方法

    當(dāng)我們?cè)诔鯇W(xué)Java的是時(shí)候,類(lèi)文件中是不設(shè)定包名(package)的,這種情況下注意classpath,基本上沒(méi)有問(wèn)題,?本文主要說(shuō)明classpath和系統(tǒng)環(huán)境變量PATH都沒(méi)問(wèn)題的情況下出錯(cuò)原因和正確處理方法,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論

江永县| 荃湾区| 开江县| 张家川| 拜城县| 正蓝旗| 剑河县| 横峰县| 涟水县| 萨迦县| 南澳县| 屯门区| 扶余县| 漳平市| 甘德县| 武胜县| 巩留县| 宝丰县| 故城县| 郑州市| 邹城市| 嘉义市| 洛川县| 凉城县| 卢龙县| 云林县| 五河县| 东乡县| 峨眉山市| 仲巴县| 威宁| 西丰县| 深水埗区| 丰宁| 曲水县| 佛冈县| 韶山市| 姜堰市| 霍城县| 赤壁市| 甘南县|