SpringBoot使用RestTemplate的示例详解

 更新时间:2023年05月29日 14:55:46   作者:java技术媛  
RestTemplate继承自InterceptingHttpAccessor并且实现了RestOperations接口,其中RestOperations接口定义了基本的RESTful操作,这些操作在RestTemplate中都得到了实现,这篇文章主要介绍了SpringBoot使用RestTemplate,需要的朋友可以参考下

RestTemplate 是由 Spring 提供的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在 RestTemplate 中都得到了实现。

POST请求

postForObject

1、使用LinkedMultiValueMap作为参数(Form表单提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("id", "123");
paramMap.add("name", "张三");
String result = template.postForObject(url, paramMap, String.class);
System.out.println("result:" + result);

2、使用Object作为参数(JSON提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
User user = new User(123, "张三");
String result = template.postForObject(url, user, String.class);
System.out.println("result:" + result);

3、使用JSONObject作为参数(JSON提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
JSONObject obj = new JSONObject();
obj.put("id", "123");
obj.put("name", "张三");
String result = template.postForObject(url, obj, String.class);
System.out.println("result:" + result);

postForEntity

1、使用LinkedMultiValueMap作为参数(Form表单提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
HttpHeaders headers = new HttpHeaders();
headers.set("token", "asdf");
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("id", "123");
paramMap.add("name", "张三");
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
ResponseEntity<String> response = template.postForEntity(url, httpEntity, String.class);
System.out.println("result:" + response.getBody());

2、使用Object作为参数(JSON提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
HttpHeaders headers = new HttpHeaders();
User user = new User(123, "张三");
HttpEntity<User> httpEntity = new HttpEntity<User>(user, headers);
ResponseEntity<String> response = template.postForEntity(url, httpEntity, String.class);
System.out.println("result:" + response.getBody());

3、使用JSONObject为参数(JSON提交)

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/update";
HttpHeaders headers = new HttpHeaders();
JSONObject obj = new JSONObject();
obj.put("id", "123");
obj.put("name", "张三");
HttpEntity<JSONObject> httpEntity = new HttpEntity<JSONObject>(obj, headers);
ResponseEntity<String> response = template.postForEntity(url, httpEntity, String.class);
System.out.println("result:" + response.getBody());

exchange

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/productDetail";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("id", "123");
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
ResponseEntity<String> response = template.exchange(url, HttpMethod.POST, httpEntity, String.class);
System.out.println("result:" + response.getBody());

postForObject和postForEntity方法的区别主要在于可以在postForEntity方法中设置header的属性,当需要指定header的属性值的时候,使用postForEntity方法。

exchange方法和postForEntity类似,但是更灵活,exchange还可以调用get、put、delete请求。

GET请求

getForObject

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/detail?id={id}";
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("id", "123");
String result = template.getForObject(url, String.class, paramMap);
System.out.println("result:" + result);

getForEntity

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/detail?id={id}";
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("id", "123");
ResponseEntity<String> response1 = template.getForEntity(url, String.class, paramMap);
System.out.println("result:" + response1.getBody());

exchange

RestTemplate template = new RestTemplate();
String url = "http://127.0.0.1:8800/product/productDetail";
HttpHeaders headers = new HttpHeaders();
headers.set("token", "asdf");
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(null, headers);
ResponseEntity<String> response = template.exchange(url, HttpMethod.GET, httpEntity, String.class,paramMap);
System.out.println("result:" + response.getBody());

到此这篇关于SpringBoot使用RestTemplate的文章就介绍到这了,更多相关SpringBoot使用RestTemplate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java Object的hashCode方法的计算逻辑分析

    java Object的hashCode方法的计算逻辑分析

    这篇文章主要介绍了java Object的hashCode方法的计算逻辑分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java PriorityQueue优点和缺点面试精讲

    Java PriorityQueue优点和缺点面试精讲

    这篇文章主要为大家介绍了Java面试中PriorityQueue的优点和缺点及使用注意详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Java实现自动把报表插入到word文档中

    Java实现自动把报表插入到word文档中

    在很多业务场景中需要在 word 文档中嵌入报表,这篇文章主要为大家介绍了如何使用Java实现自动把报表插入到word文档中,需要的可以参考下
    2024-12-12
  • 简单了解Spring Web相关模块运行原理

    简单了解Spring Web相关模块运行原理

    这篇文章主要介绍了简单了解Spring Web相关模块运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java 九宫重排(满分解法)

    Java 九宫重排(满分解法)

    本文主要介绍了Java 九宫重排(满分解法),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • springboot vue前后端接口测试树结点添加功能

    springboot vue前后端接口测试树结点添加功能

    这篇文章主要为大家介绍了springboot vue前后端接口测试树结点添加功能,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • linux系统下查看jdk版本、路径及配置环境变量

    linux系统下查看jdk版本、路径及配置环境变量

    在Linux系统中,配置JDK环境变量是非常重要的,它可以让你在终端中直接使用Java命令,这篇文章主要给大家介绍了关于linux系统下查看jdk版本、路径及配置环境变量的相关资料,需要的朋友可以参考下
    2024-01-01
  • Java中的集合框架

    Java中的集合框架

    本文主要介绍了Java中集合框架的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • spring6注解式开发示例详解

    spring6注解式开发示例详解

    文章介绍了Spring框架中使用注解进行开发的机制,包括如何定义和使用自定义注解,通过反射机制读取注解,以及如何根据注解进行组件扫描和bean的实例化,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • SpringCloud Nacos配置中心管理超详细讲解

    SpringCloud Nacos配置中心管理超详细讲解

    这篇文章主要介绍了Springcloud中的Nacos服务配置,本文以用户微服务为例,进行统一的配置,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11

最新评论