TP Web Service

S. Salva


TP3 Springboot


1. Outils

Maven, Springboot

2. Ajout d'un Repository

A

Reprenez le service du TP précédent.

Ajoutez le pattern Repository pour pouvoir manipuler des données. Il faut :

B

Reprenez le code de vos méthodes de service et mettez les à jour pour utiliser votre Repository. A ce stade, il est souhaitable d'avoir au moins 4 méthodes (CRUD).

3. Implémentation de service HateOas

HATEOAS (Hypermedia as the Engine of Application State), est une contrainte faisant partie intégrante de REst initialement. Cette contrainte stipule qu'un client peut communiquer avec un service REst sans avoir de connaissances préalables sur le service. Le service doit donc fournir tous les détails pour être appelé dynamiquement.

A

Reprenez au moins 2 méthodes de votre service pour ajouter des liens. Il faut :

5. Initiation test unitaire de service

A

Ajoutez la dépendance suivante dans votre pom.xml:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
    

Les tests de services sont font à travers un client proxy appelé TestRestTemplate. Comme ce sont des tests, le code se termine par une assertion (voire 2 par test mais pas plus).

Voici un exemple :

    @SpringBootTest
    class ServApplicationTests {
    
        @Autowired
        private TestRestTemplate restTemplate;
    
        @Test
        public void exampleTest() {
            ArrayList l = this.restTemplate.getForObject("/getallbooks", ArrayList.class);
            assertThat(l.get(0).getName()).isEqualTo("The Seconde Machine Age");
        }
 }
  

B

Suivant le temps qu'il vous reste, faites quelques tests unitaires pour votre méthode getallbooks et les autres par la suite.

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