Spring Boot - Mẫu Rest
Rest Template được sử dụng để tạo các ứng dụng sử dụng RESTful Web Services. Bạn có thể dùngexchange()để sử dụng các dịch vụ web cho tất cả các phương thức HTTP. Đoạn mã dưới đây cho thấy cách tạo Bean for Rest Template để tự động nối dây đối tượng Rest Template.
package com.tutorialspoint.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();
}
}
ĐƯỢC
Consuming the GET API by using RestTemplate - exchange() method
Giả sử URL này http://localhost:8080/products trả về JSON sau và chúng tôi sẽ sử dụng phản hồi API này bằng cách sử dụng Mẫu phần còn lại sử dụng mã sau:
[
{
"id": "1",
"name": "Honey"
},
{
"id": "2",
"name": "Almond"
}
]
Bạn sẽ phải tuân theo các điểm đã cho để sử dụng API -
- Tự động tải đối tượng mẫu còn lại.
- Sử dụng HttpHeaders để đặt Tiêu đề yêu cầu.
- Sử dụng HttpEntity để bọc đối tượng yêu cầu.
- Cung cấp URL, HttpMethod và kiểu trả về cho phương thức Exchange ().
@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));
HttpEntity <String> entity = new HttpEntity<String>(headers);
return restTemplate.exchange("
http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody();
}
}
BÀI ĐĂNG
Consuming POST API by using RestTemplate - exchange() method
Giả sử URL này http://localhost:8080/products trả về phản hồi được hiển thị bên dưới, chúng tôi sẽ sử dụng phản hồi API này bằng cách sử dụng Mẫu phần còn lại.
Đoạn mã được cung cấp bên dưới là nội dung Yêu cầu -
{
"id":"3",
"name":"Ginger"
}
Đoạn mã đưa ra bên dưới là phần Nội dung phản hồi -
Product is created successfully
Bạn sẽ phải làm theo các điểm được đưa ra bên dưới để sử dụng API -
Tự động tải đối tượng mẫu còn lại.
Sử dụng HttpHeaders để đặt Tiêu đề yêu cầu.
Sử dụng HttpEntity để bọc đối tượng yêu cầu. Ở đây, chúng tôi bọc đối tượng Sản phẩm để gửi nó đến phần thân yêu cầu.
Cung cấp URL, HttpMethod và Loại trả lại cho phương thức exchange ().
@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));
HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);
return restTemplate.exchange(
"http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody();
}
}
ĐẶT
Consuming PUT API by using RestTemplate - exchange() method
Giả sử URL này http://localhost:8080/products/3 trả về phản hồi bên dưới và chúng tôi sẽ sử dụng phản hồi API này bằng cách sử dụng Mẫu phần còn lại.
Đoạn mã đưa ra bên dưới là Nội dung yêu cầu -
{
"name":"Indian Ginger"
}
Đoạn mã đưa ra bên dưới là phần Nội dung phản hồi -
Product is updated successfully
Bạn sẽ phải làm theo các điểm được đưa ra bên dưới để sử dụng API -
Tự động tải đối tượng mẫu còn lại.
Sử dụng HttpHeaders để đặt Tiêu đề yêu cầu.
Sử dụng HttpEntity để bọc đối tượng yêu cầu. Ở đây, chúng tôi bọc đối tượng Sản phẩm để gửi nó đến phần thân yêu cầu.
Cung cấp URL, HttpMethod và Loại trả lại cho phương thức exchange ().
@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));
HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);
return restTemplate.exchange(
"http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody();
}
}
XÓA BỎ
Consuming DELETE API by using RestTemplate - exchange() method
Giả sử URL này http://localhost:8080/products/3 trả về phản hồi được cung cấp bên dưới và chúng tôi sẽ sử dụng phản hồi API này bằng cách sử dụng Mẫu phần còn lại.
Dòng mã này được hiển thị bên dưới là phần nội dung Phản hồi -
Product is deleted successfully
Bạn sẽ phải làm theo các điểm được hiển thị bên dưới để sử dụng API -
Tự động tải đối tượng mẫu còn lại.
Sử dụng HttpHeaders để đặt Tiêu đề yêu cầu.
Sử dụng HttpEntity để bọc đối tượng yêu cầu.
Cung cấp URL, HttpMethod và Loại trả lại cho phương thức exchange ().
@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));
HttpEntity<Product> entity = new HttpEntity<Product>(headers);
return restTemplate.exchange(
"http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();
}
}
Tệp lớp Bộ điều khiển mẫu Rest hoàn chỉnh được cung cấp bên dưới:
package com.tutorialspoint.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.tutorialspoint.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));
HttpEntity<String> entity = new HttpEntity<String>(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<Product> entity = new HttpEntity<Product>(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<Product> entity = new HttpEntity<Product>(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<Product> entity = new HttpEntity<Product>(headers);
return restTemplate.exchange(
"http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();
}
}
Mã cho Lớp ứng dụng khởi động mùa xuân - DemoApplication.java được cung cấp bên dưới:
package com.tutorialspoint.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);
}
}
Mã cho bản dựng Maven - pom.xml được đưa ra bên dưới -
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorialspoint</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Mã cho Gradle Build - build.gradle được cung cấp bên dưới:
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.tutorialspoint'
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')
}
Bạn có thể tạo tệp JAR thực thi và chạy ứng dụng Spring Boot bằng cách sử dụng các lệnh Maven hoặc Gradle sau:
Đối với Maven, bạn có thể sử dụng lệnh dưới đây:
mvn clean install
Sau khi “XÂY DỰNG THÀNH CÔNG”, bạn có thể tìm thấy tệp JAR trong thư mục đích.
Đối với Gradle, bạn có thể sử dụng lệnh hiển thị bên dưới:
gradle clean build
Sau khi “XÂY DỰNG THÀNH CÔNG”, bạn có thể tìm thấy tệp JAR trong thư mục build / libs.
Bây giờ, hãy chạy tệp JAR bằng cách sử dụng lệnh sau:
java –jar <JARFILE>
Bây giờ, ứng dụng đã khởi động trên cổng Tomcat 8080.
Bây giờ, hãy nhấn vào URL bên dưới trong ứng dụng POSTMAN và bạn có thể thấy kết quả.
NHẬN Sản phẩm theo Mẫu còn lại - http://localhost:8080/template/products
Tạo sản phẩm ĐĂNG - http://localhost:8080/template/products
Cập nhật sản phẩm PUT - http://localhost:8080/template/products/3
Xóa sản phẩm - http://localhost:8080/template/products/3