Spring-HATEOAS
Introduction
Dans ce chapitre nous allons aborder les différents niveaux de maturité des API REST.
Leonard Richardson a défini un modèle de maturité à quatre niveaux :
Le niveau zéro correspond au modèle le plus simple qui est à la base des services web de type SOAP avec souvent des messages en XML. Une URL de base sert toutes les requêtes de type POST et renvoie OK (code de retour 200).
POST http://monserveur/applicationcentrale
Le niveau un correspond à l’ajout par encodage dans l’URL du nom d’une ressource et de ses identifiants, ce qui ajoute un peu de sémantique.
POST http://monserveur/utilisateur/55/email
Le niveau deux correspond à l’utilisation des autres verbes tels que GET, PUT, DELETE, POST et PATCH qui indiquent ce que l’on veut faire avec la requête et introduit les réponses universellement reconnues 1xx, 2xx, 3xx, 4xx et 5xx. C’est le niveau des API REST traditionnelles.
DELETE http://monserveur/utilisateur/55
Le niveau trois correspond au niveau HATEOAS (Hypermedia As The Engine Of Application State) qui signifie Hypermédia en tant que moteur de l’état d’application. Ce niveau est une option pour les API SOAP ou REST. Il consiste à instaurer le dialogue en ajoutant des liens hypermédias dans les réponses aux appels de services afin de guider l’utilisateur pour l’utilisation de l’API.
La réponse est enrichie avec des liens, comme par exemple :
{
"content":"Bonjour",
"_links":{
"self":{
"href":"http://localhost:8080/echo?name=Bonjour"
}
}
}
Lorsque le contenu de la réponse JSON contient des liens hypermédias créés avec Spring HATEOAS, les liens qui en résultent peuvent être vérifiés également :
mockMvc.perform(get("/people").accept(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.links[?(@.rel ==
'self')].href").value("http://localhost:8080/people")**);
Lorsque le contenu de la réponse XML contient des liens hypermédias créés...
Points clés
-
Spring propose un bon support de l’hypermédia de HATEOAS.
-
Les liens hypermédias permettent de naviguer dans les réponses.
-
HATEOAS peut être un plus dans un projet, car il aide à voir les liens.