Spring Boot - Modèle de repos

Le modèle de repos est utilisé pour créer des applications qui consomment des services Web RESTful. Vous pouvez utiliser leexchange()méthode pour consommer les services Web pour toutes les méthodes HTTP. Le code ci-dessous montre comment créer Bean for Rest Template pour câbler automatiquement 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;

@SpringBootApplication
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Bean
   public RestTemplate getRestTemplate() {
      return new RestTemplate();
   }
}

AVOIR

Consuming the GET API by using RestTemplate - exchange() method

Supposons cette URL http://localhost:8080/products renvoie le JSON suivant et nous allons consommer cette réponse API en utilisant Rest Template en utilisant le code suivant

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

Vous devrez suivre les points donnés pour consommer l'API -

  • Création automatique de l'objet de modèle de repos.
  • Utilisez HttpHeaders pour définir les en-têtes de demande.
  • Utilisez HttpEntity pour encapsuler l'objet de requête.
  • Fournissez l'URL, la méthode HttpMethod et le type de retour pour la méthode 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();
   }
}

PUBLIER

Consuming POST API by using RestTemplate - exchange() method

Supposons cette URL http://localhost:8080/products renvoie la réponse ci-dessous, nous allons consommer cette réponse API en utilisant le modèle Rest.

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 -

  • Création automatique de l'objet de modèle de repos.

  • Utilisez les HttpHeaders pour définir les en-têtes de demande.

  • Utilisez HttpEntity pour encapsuler l'objet de requête. Ici, nous enveloppons l'objet Product pour l'envoyer au corps de la requête.

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

METTRE

Consuming PUT API by using RestTemplate - exchange() method

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

Le code ci-dessous est Request body -

{
   "name":"Indian Ginger"
}

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

Product is updated successfully

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

  • Création automatique de l'objet de modèle de repos.

  • Utilisez HttpHeaders pour définir les en-têtes de demande.

  • Utilisez HttpEntity pour encapsuler l'objet de requête. Ici, nous enveloppons l'objet Product pour l'envoyer au corps de la requête.

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

EFFACER

Consuming DELETE API by using RestTemplate - exchange() method

Supposons 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 ci-dessous est le corps de la réponse -

Product is deleted successfully

Vous devrez suivre les points ci-dessous pour consommer l'API -

  • Création automatique de l'objet de modèle de repos.

  • Utilisez HttpHeaders pour définir les en-têtes de demande.

  • Utilisez HttpEntity pour encapsuler l'objet de requête.

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

Le fichier complet de classe Rest Template Controller 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;

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

Le code pour Spring Boot Application Class - DemoApplication.java est donné ci-dessous -

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

Le code pour la construction Maven - 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.8

repositories {
   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 à l'aide des 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 ci-dessous -

gradle clean build

Après «BUILD SUCCESSFUL», vous pouvez trouver le fichier JAR dans 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.

Cliquez maintenant sur les URL ci-dessous dans l'application POSTMAN et vous pouvez voir la sortie.

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

Créer des produits POST - http://localhost:8080/template/products

Mettre à jour le produit PUT - http://localhost:8080/template/products/3

Supprimer le produit - http://localhost:8080/template/products/3