Spring创建RestTemplate如何正确的使用

  介绍

如何正确的使用Spring创建RestTemplate ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> 1。环境搭建

? ?为了演示创建RestTemplate的使用,我们创建两个SpringBoot项目,一个提供者作为服务器端,一个消费者作为服务调用方法

如何正确的使用Spring创建RestTemplate

<强> 2. API方法介绍


API说明getForEntity()发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象getForObject()发送一个HTTP GET请求,返回的请求体将映射为一个对象postForEntity()职位数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得到的postForObject()职位数据到一个URL,返回根据响应体匹配形成的对象headForHeaders()发送HTTP头请求,返回包含特定资源URL的HTTP头optionsForAllow()发送HTTP选项请求,返回对特定URL的允许头信息postForLocation()职位数据到一个URL,返回新创建资源的URLput()把资源到特定的URLdelete()在特定的URL上对资源执行HTTP DELETE操作交换()在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射得到的执行()在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象

<强> 3。具体使用

? ?我们通过常用的HTTP协议的四种请求方式来看下效果

<强> 3.1无参请求

? ?我们先来看下服务端请求方法不需要接收参数,

<强> getForEntity

? ?通过getForEntity来实现

服务端

,/* *   *大敌;无参,返回字符串   ,* @return   ,*/,@GetMapping (“/server1")   ,public  String  server1String () {   System.out.println才能(“服务端被访问了…“);   return 才能“success";   以前,}

调用

/* *   ,* RestTemplate 访问,提供者的第一个服务,server1   ,*/@Test   public  void  contextLoads (), {   ,String  url =,“http://localhost: 8080/server1";   ,RestTemplate  RestTemplate =, new 创建RestTemplate ();   ,ResponseEntity entity =, restTemplate.getForEntity (url, String.class);   ,//获取响应的状态   ,HttpStatus  statusCode =, entity.getStatusCode ();   ,//获取响应的头信息   ,HttpHeaders  headers =, entity.getHeaders ();   ,//获取响应身体的信息   ,String  msg =, entity.getBody ();   ,System.out.println (statusCode);   ,System.out.println(头);   ,System.out.println(味精);   }

输出结果

如何正确的使用Spring创建RestTemplate”> <br/> </p> <p>说明:</p> <p> 1. getforentity()方法执行返回的类型是ResponseEntity<T>, ResponseEntity<T>是春天对HTTP请求响应的封装,包括了几个重要的元素,如响应码,contentType, contentLength,响应消息体等,在输出结果中我们能够看到<br/> 2. getforentity()的参数中第一个是请求地址,第二个是T对应的类型</p> <p> <强> getForObject </强> </p> <p> ? ?getForObject函数实际上是对getForEntity函数的进一步封装,如果你只关注返回的消息体的内容,对其他信息都不关注,此时可以使用getForObject </p> <pre类=/* *   ,* getForObject 访问   ,*/@Test   public  void  contextLoadsObject (), {   ,String  url =,“http://localhost: 8080/server1";   ,RestTemplate  RestTemplate =, new 创建RestTemplate ();   ,//直接返回的就是我们需要的结果,但是获取不到对应的响应状态等信息   ,String  msg =, restTemplate.getForObject (url, String.class);   ,System.out.println(味精);   }

<强> 3.2有参请求

服务端方法需要接收调用者传递的参数

/* *   ,*有参,基本数据类型,返回字符串   ,* @return   ,*/,@RequestMapping (“/server2")   ,public  String  server2String (Integer  id, String 用户名){   System.out.println才能(“服务端被访问了……“+身份证+“,“+用户名);   return “才能成功——参数得到了“;   ,}/* *   ,*有参,基本数据类型,返回字符串   ,* @return   ,*/,@RequestMapping (“/server3")   ,public  String  server3String (User 用户){   System.out.println才能(“服务端被访问了……“+用户);   return “才能成功——参数得到了“;   以前,}

Spring创建RestTemplate如何正确的使用