Spring Boot Rest模板,Rest 模板用于创建使用 RESTful Web 服务的应用程序。您可以使用exchange()方法为所有 HTTP 方法使用 Web 服务。下面给出的代码显示了如何为 Rest 模板创建 Bean 以自动连接 Rest 模板对象。
package online.ipba.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } }
得到
使用 RestTemplate – exchange() 方法使用 GET API
假设此 URL http://localhost:8080/products返回以下 JSON,我们将使用以下代码使用 Rest 模板来使用此 API 响应 –
[ { "id": "1", "name": "Honey" }, { "id": "2", "name": "Almond" } ]
您必须按照给定的要点来使用 API –
- 自动装配 Rest 模板对象。
- 使用 HttpHeaders 设置请求标头。
- 使用 HttpEntity 包装请求对象。
- 为 Exchange() 方法提供 URL、HttpMethod 和返回类型。
@RestController public class ConsumeWebService { @Autowired RestTemplate restTemplate; @RequestMapping(value = "/template/products") public String getProductList() { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); HttpEntityentity = new HttpEntity (headers); return restTemplate.exchange(" http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody(); } }
邮政
使用 RestTemplate – exchange() 方法使用 POST API
假设此 URL http://localhost:8080/products返回如下所示的响应,我们将使用 Rest 模板使用此 API 响应。
下面给出的代码是请求主体 –
{ "id":"3", "name":"Ginger" }
下面给出的代码是响应主体 –
Product is created successfully
您必须遵循以下几点才能使用 API –
- 自动装配 Rest 模板对象。
- 使用 HttpHeaders 设置请求标头。
- 使用 HttpEntity 包装请求对象。在这里,我们包装 Product 对象以将其发送到请求主体。
- 为 exchange() 方法提供 URL、HttpMethod 和返回类型。
@RestController public 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)); HttpEntityentity = new HttpEntity (product,headers); return restTemplate.exchange( "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody(); } }
放
使用 RestTemplate – exchange() 方法使用 PUT API
假设此 URL http://localhost:8080/products/3返回以下响应,我们将使用 Rest 模板使用此 API 响应。
下面给出的代码是请求正文 –
{ "name":"Indian Ginger" }
下面给出的代码是响应主体 –
Product is updated successfully
您必须遵循以下几点才能使用 API –
- 自动装配 Rest 模板对象。
- 使用 HttpHeaders 设置请求标头。
- 使用 HttpEntity 包装请求对象。在这里,我们包装 Product 对象以将其发送到请求主体。
- 为 exchange() 方法提供 URL、HttpMethod 和返回类型。
@RestController public 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)); HttpEntityentity = new HttpEntity (product,headers); return restTemplate.exchange( "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody(); } }
删除
使用 RestTemplate – exchange() 方法使用 DELETE API
假设此 URL http://localhost:8080/products/3返回下面给出的响应,我们将使用 Rest 模板使用此 API 响应。
下面显示的这行代码是响应主体 –
Product is deleted successfully
您必须按照下面显示的要点来使用 API –
- 自动装配 Rest 模板对象。
- 使用 HttpHeaders 设置请求标头。
- 使用 HttpEntity 包装请求对象。
- 为 exchange() 方法提供 URL、HttpMethod 和返回类型。
@RestController public 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)); HttpEntityentity = new HttpEntity (headers); return restTemplate.exchange( "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody(); } }
完整的 Rest 模板控制器类文件如下:
package online.ipba.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 online.ipba.demo.model.Product; @RestController public class ConsumeWebService { @Autowired RestTemplate restTemplate; @RequestMapping(value = "/template/products") public String getProductList() { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); HttpEntityentity = 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 应用程序类的代码 – DemoApplication.java 如下 –
package package online.ipba.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Maven 构建的代码 – pom.xml 如下 –
4.0.0 online.ipba 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.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 = 'online.ipba' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
您可以创建一个可执行 JAR 文件,并使用以下 Maven 或 Gradle 命令运行 Spring Boot 应用程序 –
对于 Maven,您可以使用下面给出的命令 –
mvn clean install
“BUILD SUCCESS”后,可以在目标目录下找到JAR文件。
对于 Gradle,您可以使用如下所示的命令 –
gradle clean build
“BUILD SUCCESSFUL”后,您可以在build/libs 目录下找到JAR 文件。
现在,使用以下命令运行 JAR 文件 –
java –jar
现在,应用程序已在 Tomcat 端口 8080 上启动