Spring Boot – Rest Template

Publicités

Rest Template est utilisé pour créer des applications qui consomment des services Web RESTful. Vous pouvez utiliser la méthode exchange() pour consommer les services Web pour toutes les méthodes HTTP. Le code donné ci-dessous montre comment créer Bean pour Rest Template pour auto-câbler l’objet 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

Consommer l’API GET en utilisant la méthode RestTemplate – exchange()

Supposons que cette URL http://localhost:8080/products renvoie le JSON suivant et que nous allons consommer cette réponse API en utilisant Rest Template à l’aide du code suivant –


Vous devrez suivre les points donnés pour consommer l’API –

  • Autowired the Rest Template Object.
  • Utiliser HttpHeaders pour définir les en-têtes de requête.
  • Utiliser HttpEntity pour envelopper l’objet de requête.
  • Fournir l’URL, HttpMethod et le type de retour pour la méthode 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

Consommer l’API POST en utilisant RestTemplate – méthode exchange()

Supposons que cette URL http://localhost:8080/products renvoie la réponse présentée ci-dessous, nous allons consommer cette réponse API en utilisant le Rest Template.

Le code donné ci-dessous est le corps de la requête –

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

Le code donné ci-dessous est le corps de la réponse –

Product is created successfully

Vous devrez suivre les points donnés ci-dessous pour consommer l’API –

  • Autowired the Rest Template Object.

  • Utiliser le HttpHeaders pour définir les en-têtes de la requête.

  • Utiliser le HttpEntity pour envelopper l’objet de la requête. Ici, nous enveloppons l’objet Produit pour l’envoyer dans le corps de la requête.

  • Présenter l’URL, la méthode HttpMethod et le type de retour pour la méthode 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

Consommer l’API PUT en utilisant RestTemplate – méthode exchange()

Supposons que cette URL http://localhost:8080/products/3 renvoie la réponse ci-dessous et nous allons consommer cette réponse API en utilisant Rest Template.

Le code donné ci-dessous est le Request body –

{ "name":"Indian Ginger"}

Le code donné ci-dessous est le Response body –

Product is updated successfully

Vous devrez suivre les points donnés ci-dessous pour consommer l’API –

  • Autowired the Rest Template Object.

  • Utiliser HttpHeaders pour définir les en-têtes de la requête.

  • Utiliser HttpEntity pour envelopper l’objet de la requête. Ici, nous enveloppons l’objet Produit pour l’envoyer dans le corps de la requête.

  • Fournir l’URL, HttpMethod et le type de retour pour la méthode 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

Consommer l’API DELETE en utilisant RestTemplate – méthode exchange()

Supposons que cette URL http://localhost:8080/products/3 renvoie la réponse donnée ci-dessous et nous allons consommer cette réponse API en utilisant Rest Template.

Cette ligne de code présentée ci-dessous est le corps de la réponse –

Product is deleted successfully

Vous devrez suivre les points présentés ci-dessous pour consommer l’API –

  • Automatiser l’objet Rest Template.

  • Utiliser HttpHeaders pour définir les en-têtes de requête.

  • Utiliser HttpEntity pour envelopper l’objet de requête.

  • Fournir l’URL, HttpMethod, et le type de retour pour la méthode 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(); }}

Le fichier de classe complet du contrôleur Rest Template est donné ci-dessous –

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(); }}

Le code de la classe d’application Spring Boot – DemoApplication.java est donné ci-dessous –

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); }}

Le code pour Maven build – pom.xml est donné ci-dessous –

<?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>

Le code pour Gradle Build – build.gradle est donné ci-dessous –

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')}

Vous pouvez créer un fichier JAR exécutable, et exécuter l’application Spring Boot en utilisant les commandes Maven ou Gradle suivantes –

Pour Maven, vous pouvez utiliser la commande donnée ci-dessous –

mvn clean install

Après « BUILD SUCCESS », vous pouvez trouver le fichier JAR sous le répertoire cible.

Pour Gradle, vous pouvez utiliser la commande présentée ci-dessous –

gradle clean build

Après « BUILD SUCCESSFUL », vous pouvez trouver le fichier JAR sous le répertoire build/libs.

Maintenant, exécutez le fichier JAR en utilisant la commande suivante –

java –jar <JARFILE> 

Maintenant, l’application a démarré sur le port Tomcat 8080.

Démarrage de l'application sur le port Tomcat_8080

Maintenant, frappez les URL ci-dessous dans l’application POSTMAN et vous pouvez voir la sortie.

GET Products by Rest Template – http://localhost:8080/template/products

GET Products by Rest Template

Create Products POST – http://localhost:8080/template/products

Créer des produits POST

Mettre à jour un produit PUT – http://localhost:8080/template/products/3

Update Products POST

Delete Product – http://localhost:8080/template/products/3

Suppression de produits POST

Publicités

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *