RestTemplate简单介绍

请求方法
GETgetForEntity
getForObject
POSTpsoForEntity
postForEntity
postForLocation
PUTput
DELETEdelete

GET请求

第一种:getForEntity函数

该方法返回的是ReponseEntity对象,改对象是spring对http请求响应的封装,其中主要存储了http的几个重要对象 。如请求状态的枚举对象HttpStatuis,在它的父类HttpEntity中还存储着Http请求的头信息对象HttpHeaders以及泛型类型的请求体对象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9NqGmil-1604360576109)(en-resource://database/747:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5aLbQ6kI-1604360576115)(en-resource://database/749:1)]

该函数共有三个重载实现

  • ResponseEntity getForEntity(String url, Class responseType, Object… uriVariables):url为请求地址,reponseType为请求响应体body的包装类型,urlVariables为url中的参数绑定。GET请求的参数绑定通常使用url中拼接的方式,但更好的方法是在url中使用占位符并配合urlVariables参数实现GET请求的参数绑定。
ResponseEntity<String> yzq1 = restTemplate.getForEntity("http://provider/hello2?name={1}", String.class, "yzq1");
  • ResponseEntity getForEntity(String url, Class responseType, Map<String, ?> uriVariables):参数与上一方法一致。除了urlVariables的参数类型发生了变化。
Map<String,Object> map = new HashMap<>();
map.put("name", "张三");
restTemplate.getForEntity("http://provider/hello2?name={name}", String.class, map);
  • ResponseEntity getForEntity(URI url, Class responseType):该方法实用URI对象来代替之前的url和urlVariables参数来指定访问地址和参数绑定。
String url = "http://provider/hello2?name=" + URLEncoder.encode("之前昂三", "UTF-8");
URI uri = URI.create(url);
restTemplate.getForEntity(uri, String.class);
第二种:getForObject对象

可以理解为对getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP的请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。

User user = restTemplate.getForObject(uri, User.class);

该函数也有三种重载实现。

  • T getForObject(String url, Class responseType, Map<String, ?> uriVariables):url参数指定访问的地址,reponseType参数定义该方法的返回类型,urlVariables参数为url中占位符对应的参数。

  • T getForObject(URI url, Class responseType):使用map类型的urlVariables替代上面数组形式的urlVariables。

  • ResponseEntity getForEntity(String url, Class responseType, Object… uriVariables):使用URI对象来替代之前的url和urlVariables参数使用。

POST请求

第一种:postForEntity函数
  • ResponseEntity postForEntity(String url, @Nullable Object request,  Class responseType, Object… uriVariables)
  • ResponseEntity postForEntity(String url, @Nullable Object request,  Class responseType, Map<String, ?> uriVariables)
  • ResponseEntity postForEntity(URI url, @Nullable Object request, Class responseType)
    参数用法大致和getForEntity一致,需要注意的是新增加的request参数,该参数可以是一个普通对象,也可以是一个HttpEntity对象,如果是一个普通对象,RestTemplate会将请求对象转化为一个HttpEntity对象来处理;而如果request是一个HttpEntity对象,那么就会被当做一个完整的Http请求对象来处理,这个request中不仅包含了body的内容,也包含了header的内容。
第二种:postForObject函数

通过直接将请求相应的body内容包装成对象来返回使用,简化postForEntity的后续处理。

  • T postForObject(String url, @Nullable Object request, Class responseType,  Object… uriVariables)
  • T postForObject(String url, @Nullable Object request, Class responseType,  Map<String, ?> uriVariables)
  • T postForObject(URI url, @Nullable Object request, Class responseType)
第三种: postForLocation函数

该方式实现了以POST请求提交资源,并返回资源的URI。

MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("usernmae", "yzq");
map.add("password", "123");map.add("id", 15);
URI uri = restTemplate.postForLocation("http://provider/register", map);
String s = restTemplate.getForObject(uri, String.class);
System.out.println(s);
  • URI postForLocation(String url, @Nullable Object request, Object… uriVariables)
  • URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables)
  • URI postForLocation(URI url, @Nullable Object request)

由于postForLocation函数会返回新资源的URI,该URI就相当于指定了返回类型,所以此方法实现的POST请求不需要reponseType参数。

PUT请求

  • void put(String url, @Nullable Object request, Object… uriVariables)
  • void put(String url, @Nullable Object request, Map<String, ?> uriVariables)
  • void put(URI url, @Nullable Object request)‘’

put函数为void类型,没有返回内容,也就没有reponseType参数。

DELETE请求

  • void delete(String url, Object… uriVariables)
  • void delete(String url, Map<String, ?> uriVariables)
  • void delete(URI url)

由于我们在进行REST 请求时,通常是将DELETE请求的唯一标识拼接在url中,所以DELETE请求不需要request的body信息。url指定DELETE请求的位置,urlVariables绑定url中的参数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用RestTemplate,可以通过以下步骤进行配置和使用。 首先,需要在Spring Boot应用程序的配置类中创建一个RestTemplate的实例,并将其声明为一个Bean。可以使用注解`@Bean`来实现这一点。例如,在配置类中添加以下代码: ```java @Bean public RestTemplate restTemplate() { return new RestTemplate(); } ``` 然后,可以在需要使用RestTemplate的地方通过依赖注入的方式引入RestTemplate实例。可以使用`@Autowired`注解来实现依赖注入。例如: ```java @Autowired private RestTemplate restTemplate; ``` 接下来,可以使用RestTemplate的各种方法发送HTTP请求。根据请求的类型和参数的传递方式,可以选择使用不同的方法,比如`getForObject()`、`postForObject()`等。具体的使用方法可以参考中的参考资料。 总结起来,使用RestTemplate的步骤可以概括为以下几点: 1. 在配置类中创建RestTemplate的实例,并将其声明为一个Bean。 2. 在需要使用RestTemplate的地方通过依赖注入的方式引入RestTemplate实例。 3. 使用RestTemplate的方法发送HTTP请求,根据请求类型和参数的传递方式选择合适的方法。 以上就是使用RestTemplate简单介绍和使用步骤。希望能对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringBoot使用RestTemplate](https://blog.csdn.net/weixin_42408447/article/details/117560736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值