开发手册 欢迎您!
软件开发者资料库

Spring Boot - Rest Template

Spring Boot Rest模板 - 从简单和简单的步骤学习Spring Boot,从基本到高级概念,包括简介,快速入门,Bootstrapping,Tomcat部署,构建系统,代码结构,Spring Bean和依赖注入,Runners,应用程序属性,日志记录等示例,构建RESTful Web服务,异常处理,拦截器,Servlet过滤器,Tomcat端口号,Rest模板,文件处理,服务组件,Thymeleaf,使用RESTful Web服务,CORS支持,国际化,调度,启用HTTPS,Eureka服务器,服务注册Eureka,Zuul代理服务器和路由,Spring云配置服务器,Spring云配置客户端,执行器,管理服务器,管理客户端,启用Swagger2,创建Docker镜像,跟踪微服务日志,Flyway数据库,发送电子邮件,Hystrix,Web套接字,批处理服务,Apache Kafka的Spring,Twilio,单元测试用例,静态控制器单元测试,数据库处理,Web安全应用程序,带有JWT的OAuth2,Google云平台,Google OAuth2登录。

Rest模板用于创建使用RESTful Web服务的应用程序.您可以使用 exchange()方法为所有HTTP方法使用Web服务.下面给出的代码显示了如何创建Bean for Rest模板以自动连接Rest Template对象.

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;@SpringBootApplicationpublic class DemoApplication {   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }   @Bean   public RestTemplate getRestTemplate() {      return new RestTemplate();   }}

GET

使用RestTemplate使用GET API -  exchange()方法

假设此URL http://localhost:8080/products 返回以下JSON,我们将使用此使用以下代码使用Rest模板进行API响应 :

[   {      "id": "1",      "name": "Honey"   },   {      "id": "2",      "name": "Almond"   }]

您必须按照给定的点数消耗API :

  • 自动发送Rest模板对象.

  • 使用HttpHeaders设置请求标题.

  • 使用HttpEntity包装请求对象.

  • 为Exchange()方法提供URL,HttpMethod和Return类型.

@RestControllerpublic class ConsumeWebService {   @Autowired   RestTemplate restTemplate;   @RequestMapping(value = "/template/products")   public String getProductList() {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity  entity = new HttpEntity(headers);            return restTemplate.exchange("         http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody();   }}

POST

使用RestTemplate消费POST API  - exchange()方法

假设此URL http://localhost:8080/products 返回如下所示的响应,我们将使用此使用Rest模板进行API响应.

下面给出的代码是Request body :

{   "id":"3",   "name":"Ginger"}

给出的代码以下是回复正文 :

Product is created successfully

您必须按照以下给出的点来使用API :

  • 自动装配Rest模板对象.

  • 使用HttpHeaders设置请求标题.

  • 使用HttpEntity包装请求对象.在这里,我们将Product对象包装起来发送给请求体.

  • 为exchange()方法提供URL,HttpMethod和Return类型.

@RestControllerpublic class ConsumeWebService {   @Autowired   RestTemplate restTemplate;   @RequestMapping(value = "/template/products", method = RequestMethod.POST)   public String createProducts(@RequestBody Product product) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(product,headers);            return restTemplate.exchange(         "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody();   }}

PUT

使用RestTemplate消费PUT API  - exchange()方法

假设此URL http://localhost:8080/products/3 返回以下响应,我们将消耗这个API响应使用Rest Template.

下面给出的代码是Request body :

{   "name":"Indian Ginger"}

下面给出的代码是Response body :

Product is updated successfully

您必须按照以下给出的点来消费API :

  • 自动装配休息模板对象.

  • 使用HttpHeaders设置请求标头.

  • 使用HttpEntity包装请求对象.在这里,我们将Product对象包装起来发送给请求体.

  • 为exchange()方法提供URL,HttpMethod和Return类型.

@RestControllerpublic class ConsumeWebService {   @Autowired   RestTemplate restTemplate;   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.PUT)   public String updateProduct(@PathVariable("id") String id, @RequestBody Product product) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(product,headers);            return restTemplate.exchange(         "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody();   }}

DELETE

使用RestTemplate消费DELETE API  - exchange()方法

假设此URL http://localhost:8080/products/3 返回下面给出的响应,我们将使用Rest Template消耗此API响应.

下面显示的这行代码是Response body :

Product is deleted successfully

您必须按照以下显示的点消费API :

  • 自动装配Rest模板对象.

  • 使用HttpHeaders设置请求标头.

  • 使用HttpEntity来包装请求对象.

  • 提供URL,HttpMethod和Return用于exchange()方法的类型.

@RestControllerpublic class ConsumeWebService {   @Autowired   RestTemplate restTemplate;   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.DELETE)   public String deleteProduct(@PathVariable("id") String id) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(headers);            return restTemplate.exchange(         "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();   }}

完整的Rest Template Controller类文件在下面和下面给出;

package com.it1352.demo.controller; import java.util.Arrays;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpMethod;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import com.it1352.demo.model.Product;@RestControllerpublic class ConsumeWebService {   @Autowired   RestTemplate restTemplate;   @RequestMapping(value = "/template/products")   public String getProductList() {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(headers);            return restTemplate.exchange(         "http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody();   }   @RequestMapping(value = "/template/products", method = RequestMethod.POST)   public String createProducts(@RequestBody Product product) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(product,headers);            return restTemplate.exchange(         "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody();   }   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.PUT)   public String updateProduct(@PathVariable("id") String id, @RequestBody Product product) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(product,headers);            return restTemplate.exchange(         "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody();   }   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.DELETE)   public String deleteProduct(@PathVariable("id") String id) {      HttpHeaders headers = new HttpHeaders();      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));      HttpEntity entity = new HttpEntity(headers);            return restTemplate.exchange(         "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();   }}

Spring Boot Application Class的代码 -  DemoApplication.java在下面给出 :

package com.it1352.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication {   public static void main(String[] args) {      SpringApplication.run(DemoApplication.class, args);   }}

Maven build的代码 -  pom.xml在下面给出 :

      4.0.0   com.IT屋   demo   0.0.1-SNAPSHOT   jar   demo   Demo project for Spring Boot         org.springframework.boot      spring-boot-starter-parent      1.5.8.RELEASE                   UTF-8      UTF-8      1.8                     org.springframework.boot         spring-boot-starter-web                     org.springframework.boot         spring-boot-starter-test         test                                       org.springframework.boot            spring-boot-maven-plugin                     

Gradle Build  -  build.gradle的代码在下面给出 :

buildscript {   ext {      springBootVersion = '1.5.8.RELEASE'   }   repositories {      mavenCentral()   }   dependencies {      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")   }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'org.springframework.boot'group = 'com.it1352'version = '0.0.1-SNAPSHOT'sourceCompatibility = 1.8repositories {   mavenCentral()}dependencies {   compile('org.springframework.boot:spring-boot-starter-web')   testCompile('org.springframework.boot:spring-boot-starter-test')}

您可以创建一个可执行的JAR文件,并使用以下Maven运行Spring Boot应用程序或Gradle命令 :

对于Maven,您可以使用下面给出的命令 :

mvn clean install

在"BUILD SUCCESS"之后,您可以在目标目录下找到JAR文件.

For Gradle ,你可以使用下面显示的命令 :

gradle clean build

在"BUILD SUCCESSFUL"之后,你可以在build/libs目录下找到JAR文件.

现在,使用以下命令运行JAR文件 :

java - jar 

现在,应用程序已在Tomcat端口8080上启动.

在Tomcat上启动应用程序Port_8080

现在点击POSTMAN应用程序中的以下URL,你可以看到输出.

GET休闲产品模板 :   http://localhost:8080/template/products

通过休息购买产品模板

创建产品POST :   http://localhost:8080/template/products

创建产品POST

更新产品PUT :   http://localhost:8080/template/products/3

更新产品POST

删除产品 : 去; http://localhost:8080/template/products/3

删除产品POST