Développement d’API REST Performantes avec Java et Spring Boot (18 H)

Ce programme a pour objectif de former les participants à la création d’API REST performantes et sécurisées avec Java et Spring Boot. À la fin de la formation, les participants seront capables de concevoir, développer, tester, documenter et déployer des API REST, tout en garantissant leur maintenabilité et leur scalabilité.


Jour 1: Rappels Essentiels en Java et Design Patterns (3 heures)

  1. Rappels sur les Concepts de Base en Java (1 heures)
    • Programmation Orientée Objet (POO) : Encapsulation, Héritage, Polymorphisme, Abstraction
    • Interfaces, Classes abstraites et final
    • Gestion des exceptions en Java et bonnes pratiques
    • Utilisation des collections et itérations avancées (List, Set, Map)
    • Exercices
  2. Utilisation des Lambda Expressions et des Streams (0.5 heures)
    • Introduction aux lambda expressions en Java 8+
    • Manipulation des collections avec l’API Stream
    • Opérations sur les collections : filter, map, reduce, collect
    • Exercices.
  3. Introduction aux Design Patterns en Java (1.5 heures)
    • Singleton : Quand et comment l’utiliser dans les applications Spring
    • Factory : Utilisation dans le contexte de création d’objets dans les API
    • Builder : Création d’objets complexes en Java
    • Dependency Injection : Principe fondamental dans Spring, comment et pourquoi l’utiliser
    • Repository Pattern : Pour la gestion des accès aux données dans les applications
    • Exercices

Introduction à Spring Boot et API REST (3 heures)

  1. Introduction à Spring Boot (1 heures)
    • Comprendre l’architecture de Spring Boot
    • Configuration initiale d’un projet avec Spring Initializr
    • Introduction au cycle de vie des requêtes HTTP
    • Exercice: Créer un projet Spring Boot et définir une structure de base pour une API.
  2. Introduction à RESTful API (0.5 heures)
    • Les principes fondamentaux de l’architecture RESTful
    • Meilleures pratiques pour la conception des endpoints REST
    • Différences entre JSON et XML
    • Exercices
  3. Création d’Endpoints RESTful avec Spring Boot (1.5 heures)
    • Utilisation des annotations @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
    • Gestion des formats JSON/XML avec Jackson
    • Exercices

Jour 2: Intégration avec les Bases de Données et ORM (4 heures)

  1. Connexion à des Bases de Données Relationnelles (1.5 heures)
    • Intégration avec MySQL et PostgreSQL
    • Utilisation de Spring Data JPA pour la gestion des entités
    • Exercice: Configurer une connexion à MySQL et créer une entité Product.
  2. ORM avec JPA/Hibernate (1.5 heures)
    • Création et mapping des entités avec JPA et Hibernate
    • Gestion des relations (One-to-Many, Many-to-One, Many-to-Many)
    • Transactions et gestion des sessions
    • Exercice: Mettre en place des entités avec des relations et gérer des transactions simples.
  3. Base de Données NoSQL: MongoDB (1 heures)
    • Introduction à MongoDB et intégration avec Spring Data MongoDB
    • Opérations CRUD avec MongoDB
    • Exercice: Configurer MongoDB et implémenter des requêtes basiques pour des entités non relationnelles.

Sécurisation des API (2 heures)

  1. Introduction à Spring Security (0.5 heures)
    • Présentation de Spring Security
    • Concepts d’authentification et d’autorisation
    • Exercice: Mettre en place Spring Security pour protéger une API.
  2. Authentification avec JWT (1 heures)
    • Implémentation de l’authentification basée sur JWT (JSON Web Token)
    • Création de tokens et protection des endpoints
    • Exercice: Créer un système d’authentification JWT pour protéger une API REST.
  3. Gestion des Rôles et Permissions (0.5 heures)
    • Gestion des utilisateurs et des rôles avec Spring Security
    • Restriction de l’accès aux ressources en fonction des rôles
    • Exercice: Créer des rôles et définir des permissions pour protéger certains endpoints.

Jour 3: Gestion des Erreurs, Validation, et Documentation (3 heures)

  1. Gestion des Erreurs et Exceptions (1 heures)
    • Gestion globale des erreurs avec @ControllerAdvice
    • Standardisation des messages d’erreur
    • Exercice: Implémenter un mécanisme de gestion des erreurs avec des réponses JSON standardisées.
  2. Validation des Données (1 heures)
    • Utilisation des annotations de validation @Valid, @NotNull, @Pattern
    • Validation des entrées pour garantir l’intégrité des données
    • Exercice: Valider les données des requêtes POST avec des annotations de validation.
  3. Documentation avec Swagger/OpenAPI (1 heures)
    • Introduction à Swagger pour la documentation des API
    • Génération automatique des spécifications OpenAPI
    • Exercice: Générer automatiquement la documentation Swagger pour l’API.

Tests, Déploiement et Maintenance (3 heures)

  1. Tests Unitaires et d’Intégration (0.5 heures)
    • Utilisation de JUnit et Mockito pour les tests unitaires
    • Tests d’intégration avec Spring Boot Test
    • Exercice: Écrire des tests unitaires et d’intégration pour les endpoints CRUD.
  2. CI/CD et Déploiement avec Docker et Kubernetes (2 heures)
    • Introduction aux pipelines CI/CD avec GitLab CI, GitHub Actions
    • Création de conteneurs Docker et déploiement dans Kubernetes
    • Exercice: Déployer une API avec Docker et configurer un pipeline CI/CD.
  3. Suivi des Performances et Maintenance (0.5 heures)
    • Utilisation d’outils de monitoring et d’analyse des performances (Prometheus, Grafana)
    • Bonnes pratiques pour assurer la maintenance des API
    • Exercice: Configurer un outil de monitoring pour surveiller les performances de l’API déployée.

Compétences acquises à la fin de la formation :

  • Maîtrise des concepts Java nécessaires pour travailler avec Spring Boot, y compris les design patterns.
  • Capacité à concevoir et développer des API REST sécurisées avec Java Spring Boot.
  • Compétence dans l’intégration des bases de données relationnelles (MySQL, PostgreSQL) et NoSQL (MongoDB).
  • Gestion des rôles, des permissions et de la sécurité des API avec Spring Security et JWT.
  • Écriture de tests unitaires et d’intégration pour garantir la qualité des API.
  • Déploiement et gestion d’API en production avec Docker, Kubernetes, et des pipelines CI/CD.

Description

en_USEnglish