¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Java Spring
  3. Spring
Extrait - Java Spring La base técnica de las aplicaciones Jakarta EE
Extractos del libro
Java Spring La base técnica de las aplicaciones Jakarta EE Volver a la página de compra del libro

Spring-HATEOAS

Introducción

En este capítulo vamos a abordar los diferentes niveles de madurez de las API REST.

Leonard Richardson definió un modelo de madurez de cuatro niveles:

El nivel cero se corresponde con el modelo más sencillo que está en la base de los servicios web de tipo SOAP, a menudo con mensajes en XML. Una URL básica sirve todas las consultas de tipo POST y devuelve OK (código de retorno 200).

POST http://miservidor/aplicacioncentral 

El nivel uno se corresponde con la adición por codificación en la URL del nombre de un recurso y de sus identificadores, lo que añade un poco de semántica.

POST http://miservidor/usuario/55/email 

El nivel dos se corresponde con el uso de otros verbos como GET, PUT, DELETEPOST y PATCH, que indican lo que se quiere hacer con la consulta e introducen las respuestas universalmente reconocidas 1xx, 2xx, 3xx, 4xx y 5xx. Este es el nivel de las API REST tradicionales.

DELETE http://miservidor/usuario/55 

El nivel tres se corresponde con el nivel HATEOAS (Hypermedia As The Engine Of Application State), que significa hipermedia como motor de estado de la aplicación. Este nivel es una opción para las API SOAP o REST. Consiste en establecer un diálogo mediante la adición de enlaces hipermedia en las respuestas a las llamadas de servicio para guiar al usuario en el uso del API.

La respuesta se enriquece con enlaces tales como:

{ 
  "content":"Hola", 
  "_links":{ 
    "self":{  
      "href":"http://localhost:8080/echo?name=Hola" 
    } 
  } 
} 

Cuando el contenido de la respuesta JSON contiene enlaces hipermedia creados con Spring HATEOAS, también se pueden comprobar los enlaces resultantes: 

mockMvc.perform(get("/people").accept(MediaType.APPLICATION_JSON)) 
.andExpect(jsonPath("$.links[?(@.rel == 
'self')].href").value("http://localhost:8080/people")**); 

Cuando el contenido de la respuesta XML contiene vínculos hipermedia creados con Spring HATEOAS, se pueden comprobar los vínculos resultantes:

Map<String, String> ns = Collections.singletonMap("ns",  
  "http://www.w3.org/2005/Atom"); ...

Puntos clave

  • Spring ofrece un buen soporte para la hipermedia HATEOAS.

  • Los enlaces hipermedia permiten navegar a través de las respuestas.

  • HATEOAS puede ser un plus en un proyecto, ya que ayuda a ver los enlaces.