TP Web Service

S. Salva


TP2 Springboot Rest


1. Outils

Maven,

2. Développement du Service

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 :

3. Gestion des Exceptions

A

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

B

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).

4. Développement du Client

Sprinboot vous simplifie la tache en proposant un proxy via la classe RestTemplate. Cette classe propose plusieurs méthodes, notamment:

Exemple:
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.

5. Début de sécurité avec BasicAuth

Doc ICI

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.