TP Web Service
S. Salva
TP2
Springboot Rest
|
Maven,
Développez un service de gestion de livres cette fois avec
Springboot (pas de BD pour gagner du temps). Il vous ai demandé de
créer une Entity Book.
Parmis les méthodes de ce service, je vous demande une méthode qui permet
de récupérer tous les livres en retournant une ArrayList de Books.
Attention : par défaut votre service est Statefull (Rest n'est pas respecté) (ce qui est pratique ici pour tester vos méthodes @POST ou @DELETE)
Vous pouvez vous aider du Guide
de Springboot.
Voici aussi quelques recommendations :
Comme Jersey, Springboot propose une gestion des exception par défaut, mais celle-ci est limitée.
Je vous demande ici de faire vos propres exceptions. Doc ici
Votre Exception devrait avoir cette déclaration:
@ExceptionMapping(statusCode =????)
public class BookException extends RuntimeException {
public BookException(String exception) {
super(exception); } }
N'oubliez pas de tester votre service avant d'aller plus loin (Testez notamment qu'il est bien Stateful).
Vous pouvez (devez) faire des tests unitaires dans src/test/java/???Vos
tests doivent lancer un client avec la classe RestTemplate
(voir dessous).
Sprinboot vous simplifie la tache en proposant un proxy via la classe RestTemplate. Cette classe propose plusieurs méthodes, notamment:
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
Vous avez également des méthodes du type getForEntity(url, responseType) et execute(url, httpMethod, requestCallback, responseExtractor) vous permettant de récupérer des réponses complètes.
Faites un client qui permet d'ajouter quelques livres, et de récupérer tous les livres au format ArrayList<Book>.
Vous pouvez encore une fois vous aider de ce Guige Springboot et de l'Initializr.
Si le temps vous le permet, ajoutez une petite couche de sécurité à votre service en utilisant BasicAuth. Il suffit de compléter la configuration de votre service.
Pour le client, vous devez compléter le header de la requête avec le login et mdp.