Dans cet article


Offres d'emploi

Tags

Comment initialiser une API Web avec Spring Boot ?

Comment initialiser une API Web avec Spring Boot ?

Vous souhaitez créer une API web simplement ? Rien de mieux que Spring Boot ! Dans cet article, on vous montre comme initialiser une API web avec Springboot. Allez, c’est parti !

Pourquoi utiliser Spring Boot pour la création d’une API Web ?

Spring Boot (extension de Spring) est un framework de développement Java open source, il permet de concevoir des applications web et est notamment recommandé pour la création d’API web légères et modulaires. A l’opposé, on retrouve le célèbre Java EE qui est lui, plutôt destiné aux applications d’entreprises très lourdes.

Son principal avantage est d’être bootable facilement ! L’objectif est d’avoir le strict minimum pour lancer son projet, organiser le code et la manière de faire, le tout en optimisant les performances.

Développer une API web avec Springboot, comment ça marche ?

Spring Boot définit une configuration de base permettant de simplifier et rendre rapide la création de nouveaux projets. Notre projet aura seulement besoin de certaines librairies pour commencer.

Il est possible de générer rapidement un nouveau projet sur http://start.spring.io, en spécifiant si c’est un projet Maven ou Gradle, le langage (Java, Kotlin, Groovy), la version de Spring Boot et de Java, le packaging (Jar ou War) et des dépendances de base (facultatif).

On pourra ajouter, dans le pom.xml, d’autres modules au besoin durant l’avancement du projet (Spring Batch, Websocket, serveur de mail…). Il est aussi possible de commencer son projet sur un IDE tel que IntelliJ.

initialisation d’une API Web avec SpringBoot

Ici, on a choisi trois dépendances courantes pour débuter un nouveau projet :

  • Spring Security : norme pour sécuriser l’application. Permet de personnaliser totalement l’authentification (LDAP, OpenID, BDD) et le contrôle d’accès.
  • Rest Repositories : facilite la création des services Web REST.
  • Spring Data JPA : facilite la mise en œuvre des couches d’accès aux données.

On peut explorer le projet avant de le générer, on retrouve alors dans le pom.xml la version de Spring Boot et de Java, les métadonnées de notre projet ainsi que nos dépendances choisies à l’étape précédente.
Nous avons une architecture de base avec le dossier main contenant le back (Java), les ressources et le dossier test pour les tests d’intégration.

demo initialisation projet spring boot

Dans “resources” se trouve le fichier application.properties contenant les propriétés de l’application, comme le numéro de port du serveur, l’url d’accès à la BDD, le type d’authentification etc… Il est aussi possible d’avoir ces propriétés dans un fichier YAML, application.yml.

server.port = 8080
spring.application.name = demo
spring.data.mongodb.uri = mongodb://localhost/test

Côté back, deux classes ont été générées :

  • DemoApplication : l’annotation @SpringBootApplication permet de marquer cette classe comme point d’entrée de l’application lors de son exécution et déclenche alors l’ensemble des configurations.
package  com.example.demo;
import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public  class  DemoApplication {

	public  static  void  main(String[] args)  {
		SpringApplication.run(DemoApplication.class, args);
	}
}
  • ServletInitializer : exécute l’application déployée à partir du War.
package  com.example.demo;
import  org.springframework.boot.builder.SpringApplicationBuilder;
import  org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public  class  ServletInitializer  extends  SpringBootServletInitializer  {

  @Override
  protected  SpringApplicationBuilder  configure(SpringApplicationBuilder application)  {
	  return application.sources(DemoApplication.class);
  }
}

Les annotations SpringBoot

Voici quelques annotations principales proposées par Spring Boot qui permettent d’appliquer facilement des rôles et des comportements à des classes (on vous en cite quelques uns, mais il en existe beaucoup d’autres !) :

@Component : annotation générique pour des composants gérés par Spring.

@Component  
public class DemoClass {
}

@Autowired : injecte des @Component dans une classe pour les utiliser.

public class MailConfig {  
    @Autowired  
    private ApplicationProperties applicationProperties;
}

@Service : classe qui réalise des traitements métiers sur des données.

@Service  
public class StorageService {
}

@Repository : classe qui manipule des données d’une BDD.

@Repository  
public interface UserRepository extends JpaRepository<User, Long> {
}

@Controller : classe exposant une API REST.

@Controller  
public class UserController {
}

@RequestMapping : URI de base d’accès à votre API REST (« /api »)

@RestController  
@RequestMapping("/api")  
public class UserResource {
}

Une fois notre application développée, nous pouvons la lancer via un exécutable (Jar ou War contenu dans le dossier target) contenant un serveur embarqué qui va, à son tour, lancer le projet.

Créer une API web avec Springboot : les points forts

Créer une API Web avec Spring Boot comporte plein d’avantages. Pour nous, les plus importants sont les suivants :

  • Légèreté : il n’y a que le strict minimum pour faire tourner les services ! Pas de superflux !

  • Simplicité de prise en main : la configuration simplifiée du projet permet de se concentrer sur la partie métier. La complexité de la création de l’API est gérée par Spring Boot.

  • Rapidité et efficacité : avec un projet Maven ou Gradle, on obtient un Jar ou War, contenant les briques du serveur web qui est directement exécutable dans un service de conteneur comme AWS.

Inconvénient lors de la création d’une API Web Springboot

L’inconvénient majeur avec SpringBoot, c’est le débogage. Spring Boot est composé de plusieurs couches différentes qu’il est possible de décompiler, mais ce n’est pas simple quand on souhaite débugger pour remonter à la source du problème. On passe d’un fichier à un autre puis un autre etc… et ça peut être vraiment très long parfois !

Spring Boot pour créer une API Web, on recommande ?

OUI ! Spring Boot est LE framework pour commencer toute API web rapidement et simplement. A la portée de tous et en quelques clics, nous avons une configuration de base qui permet de démarrer directement le développement de notre projet, que l’on pourra faire évoluer par la suite !

Il est capable de créer des services suffisamment légers et performants, en ne conservant que ce dont nous avons réellement besoin et donne la possibilité de déployer/exécuter l’application sans aucune autre ressource externe… et ça, c’est le top !

L'équipe AXOPEN

Voir aussi les articles suivants

Les Websockets : définition et implémentation dans une application Angular et Java Springboot
Vous souhaitez faire une application web interactive en temps réel ? Rien de mieux que les Websockets ! Les Websockets, c’est quoi ? Quand on parle de websocket, on parle plutôt du protocole Websocket en réalité !
Lire l'article

API Kong Gateway, c'est quoi ?

API Kong Gateway, c'est quoi ?

Le 18/08/2020 par Florian Necas

Avant de rentrer dans le vif du sujet et de vous parler de l’API Kong Gateway, il faut bien comprendre que Kong s’inscrit dans une démarche d’API Management. Le but est d’améliorer la gestion et l’exploitation d’APIs dans un environnement sécurisé et évolutif, sans affecter l’expérience utilisateur.
Lire l'article

Les tests End to End - Présentation & Mise en place avec Angular
Les tests End to End, c’est quoi ? Les tests End to End (de bout en bout) sont une technique utilisée pour vérifier si une application (web, mobile…) se comporte comme prévu, du début à la fin.
Lire l'article