Springboot & API Rest

Framework Springboot

 

 

Table des matières

 

Résumé. 3

Introduction. 4

Création d’un projet Springboot 5

Sélection de l’environnement de développement (IDE) 5

Téléchargement et installation d’IntelliJ. 5

Création d’un projet Springboot 6

Etape 1 : sélection du SDK et de l’url d’initialisation. 7

Etape 2 : Informations sur le projet 8

Etape 3 : Sélection des dépendances. 9

Etape 4 : Enregistrement du projet et finalisation. 10

Mise en place des services. 11

Mise en place de l’architecture. 11

Service REST simple. 11

Compilation du projet 12

Service REST avec réponse complexe. 14

 

 

 

Résumé

 

Springboot is above all an extension of the Spring framework allowing to set up a file architecture allowing to exploit services and databases.

Spring is a so-called "lightweight" container, that is, an infrastructure similar to a J2EE application server.

It therefore supports the creation of objects and the linking of objects via a configuration file that describes the objects to be manufactured and the dependency relationships between these objects.

The big advantage over application servers is that with Spring, classes do not need to implement any interface to be supported by the framework (unlike J2EE application servers and EJBs). It's in this sense that Spring is called a lightweight container.

Springboot allows from the core of spring, to make a standalone application. This application will embark all that is necessary to operate autonomously.

 

 

Introduction

 

Springboot fonctionne sur la base du framework Spring qui permet de mettre en place une architecture complète et fonctionnelle permettant de concevoir des applications Java interagissant avec une ou des bases de données et exposant des services au travers d’une API web.

L’API pourra ainsi accéder à des traitements puissants et fonctionnels rendus disponibles par Spring. Cette communication pourra s’effectuer de deux manières différentes : soit par un protocole SOAP, soit un protocole REST.

L’idée est de pouvoir, au travers d’une requête HTTP envoyée depuis le navigateur ou depuis n’importe quelle autre source permettant d’effectuer une requête HTTP, de faire transiter des informations ainsi qu’une demande qui sera réceptionnée par Spring. Ces informations vont être utilisées dans différentes actions et codes Java pour effectuer ou non des appels à une ou des bases de données, construire une réponse appropriée qui sera le résultat de la requête envoyée et enfin, retourner le résultat par une requête HTTP à l’API web sous un format JSON par défaut.

Ainsi, aucun traitement de données n’est effectué directement côté client mais du côté service côté back-end. Cela ouvre ainsi un grand champs de possibilité, que ce soit au niveau du code pour l’utilisation de test unitaires permettant de contrôler la qualité et la bonne fonctionnalité du code, ou encore une maintenance plus facile de certaines parties du code.

Le code métier est donc centralisé à un seul endroit, il n’est pas accessible par le client ce qui rajoute une sécurité à notre application.

Spring permet donc de mettre en place cette architecture de service REST mais comporte certaines contraintes : elle a besoin de serveurs de traitements spécifiés et non portatifs.

Sprinboot règle ce problème en proposant une solution tout en un offrant les même fonctionnalités que Spring, mais en portatif.

Nous allons donc voir comment créer un projet Springboot avec un IDE, comment créer un ou plusieurs services renvoyant une réponse simple et complexe à exploiter et enfin comment effectuer l’appel des services mis en place au travers de requêtes HTTP.

 

 

Création d’un projet Springboot

 

Sélection de l’environnement de développement (IDE)

 

Pour l’exemple qui va être présenté, l’IDE utilisé sera celui d’IntelliJ. C’est un IDE permettant, entre autres, de développer des applications en Java. Pour les personnes ne pouvant utiliser IntelliJ pour des raisons de licences ou autre, il est également possible de mettre en place un projet Springboot sur Eclipse qui est ouvert à tout le monde.

La mise en place d’un projet Springboot pour Eclipse ne sera cependant pas abordé dans cette explication là mais de nombreuses documentations de mise en place sont disponibles sur internet.

 

 

Téléchargement et installation d’IntelliJ

 

Pour télécharger IntelliJ rien de plus simple, il vous suffit de vous rendre sur le site officiel à l’adresse suivante : https://www.jetbrains.com/idea/

 

Une fois sur le site, cliquez sur le bouton download, sélectionnez le type de licence que vous souhaitez puis finalisez pour lancer le téléchargement.

Une fois l’installateur téléchargé, lancez le pour installer IntelliJ en suivant les étapes une à une.

Une fois l’installation effectuée, nous allons pouvoir nous lancer dans la création d’un premier projet Springboot.

 

Création d’un projet Springboot

 

Pour créer un projet Springboot, lancez en premier l’IDE IntelliJ. Lors du premier lancement, une fenêtre simple fera son apparition, cliquez alors sur créer un nouveau projet.

Pour les personnes ayant déjà effectué la création d’un projet quelconque ou Java sur IntelliJ, le principe est le même : Fichier > créer un nouveau projet.

Le choix du type de projet va être demandé. Pour créer un projet Springboot, sélectionnez le type Spring Initializr.

 

Etape 1 : sélection du SDK et de l’url d’initialisation

 

La sélection de ce type donne un premier choix de configuration à effectuer :

  • L’SDK à utiliser dans le projet
  • L’Url d’initialisation du projet

 

Sélectionnez les réglages comme ci-dessous afin de pouvoir passer à l’étape suivante.

 

 

Etape 2 : Informations sur le projet

 

La seconde étape va être de renseigner l’ensemble des informations pour la bonne construction du projet Springboot.

  • Group: package principal du projet
  • Artifact: nom de l’artifact qui sera déployé
  • Name: nom de votre projet
  • Description: Description du projet

 

 

 

Etape 3 : Sélection des dépendances

La troisième étape est relativement importante. Elle permet de sélectionner l’ensemble des dépendances utiles suivant les fonctionnalités de notre application. Si aucune dépendances n’est sélectionnée et que plus tard au cours de votre développement, vous souhaitez en utiliser une, il sera tout à fait possible de les rajouter manuellement dans le pom.xml de votre projet.

 

Pour notre projet, seule la dépendance web nous intéresse :

 

Etape 4 : Enregistrement du projet et finalisation

 

La dernière étape est des plus simple : sélectionner le chemin vers lequel le projet va être enregistré sur votre machine et finalisez l’installation.

 

 

 

Mise en place des services

 

Mise en place de l’architecture

 

Maintenant que nous venons de créer notre projet, nous allons pouvoir implémenter nos deux services. Nous allons créer un service simple qui prends en paramètre un prénom et qui retourne « Hello + prénom » et un second plus complexe qui retournera la suite de Fibonacci suivant un nombre d’itération données en paramètres.

Les deux services peuvent être dans la même classe Java, la distinction est effectuée par le mapping des URL du service REST ce qui nous permet de contrôler le nom de l’URL et les traitements à effectuer suivant les appels.

 

 

 

Service REST simple

 

Le service dit « simple » est le service qui retourne la phrase « Hello + nom » à l’utilisateur. La requête HTTP à effectuer sera donc basée sur un get qui prendra un seul paramètre name et qui retournera le résultat qui sera la phrase créer dans le back-end.

Passons à l’implémentation de ce service. Dans l’architecture de votre projet, commencez par créer un package « Controller » comportant une classe Java « RestEndPoint » (vous pouvez les appeler comme vous le souhaitez).

 

Une fois ceci fait, nous allons pouvoir implémenter concrètement le premier service. Dans votre classe RestEndPoint, nous aller créer un mapping permettant, lors d’une requête HTTP sur cette URL de communiquer avec le back-end de notre application et ainsi nous retourner la réponse.

Voici donc l’implémentation de notre service simple :

 

 

Détaillons un peu tout ça. La notation RequestMapping nous permet de spécifier l’url permettant d’appeler notre service. C’est à partir de cette url que nous allons rajouter le ou les paramètres attendus par le service pour effectuer notre requête.

Sur cette url, nous attachons une méthode que j’ai nommée « getName » qui sera invoquée lors de la requête HTTP et qui effectuera le code à l’intérieur (en l’occurrence ici retourne une chaine reconstruite à partir du paramètre donnée en entrée).

Le service est implémenté. Nous allons devoir le compiler afin que le code soit pris en compte, que les dépendances supplémentaires (s’il y’en a) soient téléchargées par Maven et que le projet soit prêt à être lancé.

 

Compilation du projet

Pour compiler le projet, c’est tout aussi simple que de le créer. Dans l’interface d’IntelliJ, sur la droite, se trouve une colonne donnant accès aux fonctionnalités de Maven.

Ouvrez ces fonctionnalités afin d’effectuer un « install » ce qui permettra de compiler votre code et de télécharger / mettre à jour les dépendances nécessaires.

 

Une fois la compilation de Maven terminée, si aucune erreur n’est présente dans votre code (ce qui devrait être le cas), lancez votre application à l’aide du bouton « Play » vert qui se trouve en haut à droite d’IntelliJ.

Spring va alors s’exécuter, lancer le serveur Tomcat et tout les services nécessaires au bon fonctionnement de l’application.

Une fois la phase de lancement effectuée, ouvrez votre navigateur internet préféré et tapez dans l’url l’adresse suivante :

http://localhost:8080/demandeNom?name=votrePrenom

 

Rentrez bien votre prénom à la place de « votrePrenom ». Appuyez sur entrée pour lancer la requête HTTP. Notre service va répondre et vous renvoyer en retour la réponse attendue :

 

Notre service REST fonctionne ! Maintenant que nous savons effectuer une réponse simple, passons un service permettant de récupérer une réponse un peu plus complexe …

 

 

 

Service REST avec réponse complexe

 

Nous avons vu précédemment comment mettre en place un service REST avec une réponse simple. Et bien l’implémentation d’un service avec une réponse complexe n’est pas beaucoup plus difficile, si ce n’est que le code à l’intérieur de la requête sera lui plus compliqué.

Pour notre service complexe, nous allons implémenter la suite de Fibonacci qui, lorsqu’elle sera appelée par une requête HTTP, nous retournera l’ensemble des itérations en fonction d’un nombre d’itérations donné en entrée.

Je m’explique : l’url de requête va contenir un paramètre étant un nombre qui va définir le nombre de chiffre désirés sur notre suite de Fibonacci. Notre back-end va effectuer le traitement et nous ressortir sous un format JSON chacun des chiffres composant la suite.

Pour implémenter le service, dans la même classe que pour le premier service, créez un second RequestMapping afin de créer une seconde url d’appel différente de la première et terminez le code comme ceci :

 

Ceci est une implémentation itérative de la suite de Fibonacci rattachée à notre url de requête HTTP.

Si vous avez bien suivi la mise en place du service simple, vous comprenez alors que la mise en place de ce service est également terminée.

Il ne nous reste plus qu’a compiler avec Maven et à relancer notre serveur comme fait précédemment pour pouvoir appeler notre nouveau service.

Cette fois-ci, dans votre navigateur, rentrez l’url suivante :

http://localhost:8080/fibonacciSuite?number=18

 

Lancez la requête et vous allez recevoir la réponse de notre service sous forme de JSon qui sera la suivante :

 

 

Et voilà ! Nos deux services sont implémentés. Vous pouvez maintenant effectuer la mise en place d’autant de services que vous le souhaitez et exploiter les réponses de la manière la plus appropriée.

 

 

Conclusion

 

Springboot est une solution « clé en main » permettant de créer un environnement standalone pour toute application Java nécessitant l’utilisation d’un serveur pour différents traitements possibles.

La structure simplifiée de Springboot permet de mettre en place rapidement facilement un service REST accessible depuis n’importe quelle interface client via AngularJS ou tout autre framework.

 

 

Références

 

[1] – Documentation Spring : http://spring.io/projects/spring-boot

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *