Spring Boot – Plantilla Rest

Anuncios

La Plantilla Rest se utiliza para crear aplicaciones que consumen Servicios Web RESTful. Puedes utilizar el método exchange() para consumir los servicios web para todos los métodos HTTP. El código dado a continuación muestra cómo crear Bean para Rest Template para autocablear el objeto 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

Consumiendo la API GET mediante el método RestTemplate. exchange()

Supongamos que esta URL http://localhost:8080/products devuelve el siguiente JSON y vamos a consumir esta respuesta de la API mediante el uso de Rest Template utilizando el siguiente código –


Tendrás que seguir los puntos dados para consumir la API –

  • Autocambiar el objeto Rest Template.
  • Utilizar HttpHeaders para establecer las cabeceras de la petición.
  • Utilizar HttpEntity para envolver el objeto de la petición.
  • Proveer la URL, HttpMethod, y el tipo de retorno para el método 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

Consumiendo la API POST mediante el método RestTemplate – exchange()

Suponiendo que esta URL http://localhost:8080/products devuelve la respuesta que se muestra a continuación, vamos a consumir esta respuesta de la API utilizando la plantilla Rest.

El código dado a continuación es el cuerpo de la Solicitud –

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

El código dado a continuación es el cuerpo de la Respuesta –

Product is created successfully

Tendrás que seguir los puntos dados a continuación para consumir la API –

  • Autocordar el Objeto Rest Template.

  • Utilizar el HttpHeaders para establecer las cabeceras de solicitud.

  • Utilizar el HttpEntity para envolver el objeto de solicitud. Aquí, envolvemos el objeto Product para enviarlo al cuerpo de la solicitud.

  • Proporcionar la URL, HttpMethod, y el tipo de retorno para el método 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

Consumiendo la API PUT mediante el método RestTemplate – exchange()

Supongamos que esta URL http://localhost:8080/products/3 devuelve la siguiente respuesta y vamos a consumir esta respuesta de la API utilizando Rest Template.

El código dado a continuación es el cuerpo de la solicitud –

{ "name":"Indian Ginger"}

El código dado a continuación es el cuerpo de la respuesta –

Product is updated successfully

Tendrás que seguir los puntos dados a continuación para consumir la API –

  • Autocordar el objeto Rest Template.

  • Utilizar HttpHeaders para establecer las cabeceras de la petición.

  • Utilizar HttpEntity para envolver el objeto de la petición. Aquí, envolvemos el objeto Product para enviarlo al cuerpo de la solicitud.

  • Proporcionar la URL, HttpMethod, y el tipo de retorno para el método 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

Consumiendo la API DELETE mediante el método RestTemplate – exchange()

Supongamos que esta URL http://localhost:8080/products/3 devuelve la respuesta dada a continuación y vamos a consumir esta respuesta de la API utilizando Rest Template.

Esta línea de código que se muestra a continuación es el cuerpo de la respuesta –

Product is deleted successfully

Tendrás que seguir los puntos que se muestran a continuación para consumir la API –

  • Autocordar el objeto Rest Template.

  • Utilizar HttpHeaders para establecer las cabeceras de la petición.

  • Utilizar HttpEntity para envolver el objeto de la petición.

  • Proveer la URL, HttpMethod, y el tipo de retorno para el método 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(); }}

El archivo de clase Rest Template Controller completo se da a continuación –

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

El código de la clase de aplicación Spring Boot – DemoApplication.java se da a continuación –

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

El código para Maven build – pom.xml se da a continuación –

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

El código para Gradle Build – build.gradle se da a continuación –

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

Puedes crear un archivo JAR ejecutable, y ejecutar la aplicación Spring Boot utilizando los siguientes comandos de Maven o Gradle –

Para Maven, puedes utilizar el comando que se indica a continuación –

mvn clean install

Después de «BUILD SUCCESS», puedes encontrar el archivo JAR bajo el directorio de destino.

Para Gradle, puedes utilizar el comando que se muestra a continuación –

gradle clean build

Después de «BUILD SUCCESSFUL», puedes encontrar el archivo JAR bajo el directorio build/libs.

Ahora, ejecuta el archivo JAR utilizando el siguiente comando –

java –jar <JARFILE> 

Ahora, la aplicación se ha iniciado en el puerto 8080 de Tomcat.

Aplicación iniciada en el puerto 8080 de Tomcat

Ahora pulsa las siguientes URL’s en la aplicación POSTMAN y podrás ver la salida.

Obtener productos por plantilla Rest – http://localhost:8080/template/products

Obtener productos por plantilla Rest

Crear Productos POST – http://localhost:8080/template/products

Crear Productos POST

Actualizar Producto PUT – http://localhost:8080/template/products/3

Actualizar Producto POST

Borrar Producto – http://localhost:8080/template/products/3

Borrar productos POST

Anuncios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *