Rest Template służy do tworzenia aplikacji, które konsumują RESTful Web Services. Możesz użyć metody exchange() aby skonsumować usługi sieciowe dla wszystkich metod HTTP. Poniższy kod pokazuje, jak utworzyć Bean dla Rest Template, aby automatycznie okablować obiekt 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;@SpringBootApplicationpublic class DemoApplication { public static void main(String args) { SpringApplication.run(DemoApplication.class, args); } @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); }}
GET
Konsumowanie API GET poprzez użycie metody RestTemplate – exchange() exchange() method
Zakładamy, że ten URL http://localhost:8080/products zwraca następujący JSON i zamierzamy skonsumować tę odpowiedź API za pomocą Rest Template używając następującego kodu –
Będziesz musiał postępować zgodnie z podanymi punktami, aby skonsumować API –
- Autowired the Rest Template Object.
- Użyj HttpHeaders, aby ustawić nagłówki żądania.
- Użyj HttpEntity, aby zawinąć obiekt żądania.
- Podaj URL, HttpMethod oraz typ zwrotu dla metody Exchange().
@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 <String> entity = new HttpEntity<String>(headers); return restTemplate.exchange(" http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody(); }}
POST
Konsumowanie API POST za pomocą RestTemplate – metoda exchange()
Zakładając, że ten URL http://localhost:8080/products zwraca odpowiedź pokazaną poniżej, zamierzamy skonsumować tę odpowiedź API za pomocą Rest Template.
Kod podany poniżej jest ciałem Request –
{ "id":"3", "name":"Ginger"}
Kod podany poniżej jest ciałem Response –
Product is created successfully
Będziesz musiał postępować zgodnie z punktami podanymi poniżej, aby skonsumować API –
-
Autowired the Rest Template Object.
-
Użyj HttpHeaders aby ustawić nagłówki żądania.
-
Użyj HttpEntity aby zawinąć obiekt żądania. Tutaj, zawijamy obiekt Product, aby wysłać go do ciała żądania.
-
Podaj URL, HttpMethod i typ zwrotu dla metody exchange().
@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<Product> entity = new HttpEntity<Product>(product,headers); return restTemplate.exchange( "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody(); }}
PUT
Konsumowanie API PUT za pomocą RestTemplate – metoda exchange()
Zakładamy, że ten URL http://localhost:8080/products/3 zwraca poniższą odpowiedź i zamierzamy skonsumować tę odpowiedź API za pomocą Rest Template.
Kod podany poniżej jest ciałem Request –
{ "name":"Indian Ginger"}
Kod podany poniżej jest ciałem Response –
Product is updated successfully
Będziesz musiał postępować zgodnie z punktami podanymi poniżej, aby skonsumować API –
-
Autowired the Rest Template Object.
-
Użyj HttpHeaders aby ustawić nagłówki żądania.
-
Użyj HttpEntity aby zawinąć obiekt żądania. Tutaj zawijamy obiekt Product, aby wysłać go do ciała żądania.
-
Podaj URL, HttpMethod i typ zwrotu dla metody exchange().
@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<Product> entity = new HttpEntity<Product>(product,headers); return restTemplate.exchange( "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody(); }}
DELETE
Konsumowanie API DELETE za pomocą RestTemplate – metoda exchange()
Zakładamy, że ten URL http://localhost:8080/products/3 zwraca odpowiedź podaną poniżej i zamierzamy skonsumować tę odpowiedź API za pomocą Rest Template.
Ta linia kodu pokazana poniżej jest ciałem odpowiedzi –
Product is deleted successfully
Będziesz musiał wykonać punkty pokazane poniżej, aby skonsumować API –
-
Autowired the Rest Template Object.
-
Użyj HttpHeaders aby ustawić nagłówki żądania.
-
Użyj HttpEntity aby zawinąć obiekt żądania.
-
Podaj URL, HttpMethod i typ zwrotu dla metody 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<Product> entity = new HttpEntity<Product>(headers); return restTemplate.exchange( "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody(); }}
Pełny plik klasy Rest Template Controller podany jest poniżej –
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;@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<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(); }}
Kod klasy aplikacji Spring Boot – DemoApplication.java is given below –
package com.tutorialspoint.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); }}
Kod dla Maven build – pom.xml is given below –
<?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>
Kod dla Gradle Build – build.gradle jest podany poniżej –
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.8repositories { mavenCentral()}dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test')}
Możesz utworzyć wykonywalny plik JAR i uruchomić aplikację Spring Boot za pomocą następujących poleceń Maven lub Gradle –
Dla Maven, możesz użyć polecenia podanego poniżej –
mvn clean install
Po „BUILD SUCCESS”, możesz znaleźć plik JAR w katalogu docelowym.
Dla Gradle, możesz użyć polecenia pokazanego poniżej –
gradle clean build
Po „BUILD SUCCESSFUL”, możesz znaleźć plik JAR pod katalogiem build/libs.
Teraz uruchom plik JAR za pomocą następującego polecenia –
java –jar <JARFILE>
Teraz aplikacja uruchomiła się na porcie Tomcat 8080.
Teraz wykonaj poniższe adresy URL w aplikacji POSTMAN i możesz zobaczyć dane wyjściowe.
GET Products by Rest Template – http://localhost:8080/template/products
Twórz Produkty POST – http://localhost:8080/template/products
Uaktualnij Produkt PUT – http://localhost:8080/template/products/3
Delete Product – http://localhost:8080/template/products/3
http://localhost:8080/template/products/3