SlideShare una empresa de Scribd logo
1 de 54
REST API
AVEC
SPRING BOOT
Romaric BANGA
Associate Android
Developer
Spring Developer
@bangaromaric
2
Sommaire
●Partie 1 : Introduction à Spring Boot
●Partie 2 : Spring Data JPA
●Partie 3 : Spring Data REST
●Partie 4 : Spring Security
Partie 1
●C’est quoi Spring Boot ?
●Pourquoi doit-on utiliser Spring Boot ?
●Fonctionnalités de Spring Boot
●Cas d'utilisation
●Projets connexes
●Get started spring boot
Partie 1
C’est quoi Spring Boot ?
C’est quoi Spring Boot ?
Spring Boot
●Spring Boot est un projet qui est construit au-dessus du framework Spring. Il offre un
moyen plus simple et plus rapide de configurer et d’exécuter des applications simples
basées sur le Web.
●C’est un module Spring qui fournit la fonction RAD (Rapid Application Development) au
Spring Framework.
●Il est utilisé pour créer une application autonome basée sur Spring que vous pouvez
simplement exécuter car elle nécessite une configuration Spring minimale.
●Spring Boot = Spring + Serveurs Web intégrés (Jetty, Tomcat) – Confguration XML des
Bean( et @Configuration)
Partie 1
Pourquoi doit-on utiliser Spring Boot ?
Pourquoi utiliser Spring Boot ?
Spring est partout
Les bibliothèques flexibles de Spring sont approuvées par
les développeurs du monde entier. Spring offre chaque
jour de délicieuses expériences à des millions
d'utilisateurs finaux, qu'il s'agisse de la télévision en
streaming, des achats en ligne ou d'innombrables autres
solutions innovantes. Spring a également des
contributions de tous les grands noms de la technologie,
notamment Alibaba, Amazon, Google, Microsoft, etc.
Pourquoi utiliser Spring Boot ?
Spring est flexible
L'ensemble flexible et complet d'extensions et de
bibliothèques tierces de Spring permet aux développeurs
de créer presque toutes les applications imaginables.
Que vous créiez des microservices sécurisés, réactifs,
basés sur le cloud pour le Web, ou des flux de données de
streaming complexes pour l'entreprise, Spring a les outils
pour vous aider.
Pourquoi utiliser Spring Boot ?
Spring est productif
Spring Boot transforme votre approche de
programmation Java, rationalisant radicalement votre
expérience. Spring Boot combine des nécessités telles
qu'un contexte d'application, un serveur Web intégré
configuré automatiquement pour faire du
développement de microservices un jeu d'enfant en un
temps record.
Pourquoi utiliser Spring Boot ?
Spring est rapide
Spring Boot aide les développeurs à créer des
applications facilement et avec beaucoup moins d'efforts
que d'autres paradigmes concurrents.
Les serveurs Web intégrés, la configuration
automatique et les « fat jars » vous aident à démarrer
rapidement, et des innovations telles que LiveReload
dans Spring DevTools permettent aux développeurs
d'itérer plus rapidement que jamais. Vous pouvez même
démarrer un nouveau projet Spring en quelques
secondes, avec Spring Initializr sur start.spring.io.
Pourquoi utiliser Spring Boot ?
Spring est sécurisé
Spring a fait ses preuves dans la gestion rapide et
responsable des problèmes de sécurité. Les committers
de Spring travaillent avec des professionnels de la
sécurité pour corriger et tester toutes les vulnérabilités
signalées. Les dépendances tierces sont également
surveillées de près et des mises à jour régulières sont
publiées pour aider à garder vos données et applications
aussi sûres que possible. De plus, Spring Security vous
permet de vous intégrer plus facilement aux systèmes de
sécurité standard de l'industrie et de fournir des solutions
fiables et sécurisées par défaut.
Pourquoi utiliser Spring Boot ?
Spring à une grande communauté
La communauté Spring est énorme, mondiale, diversifiée
et comprend des personnes de tous âges et de toutes
capacités, des débutants complets aux professionnels
chevronnés. Où que vous en soyez dans votre parcours,
vous pouvez trouver l'assistance et les ressources dont
vous avez besoin pour passer au niveau supérieur :
démarrages rapides, guides et didacticiels, vidéos,
meetups, assistance ou même formation et certification
formelles.
Partie 1
Fonctionnalités de Spring Boot
Fonctionnalités de Spring Boot
Spring Boot
●Il crée des applications Spring autonomes qui peuvent être démarrées en utilisant Java -jar.
●Il embarque différents serveurs HTTP tels que Tomcat, Jetty. Nous n’avons pas besoin de
déployer des fichiers WAR.
●Il fournit des 'starter' pour simplifier la construction de notre configuration.
●Configure automatiquement les bibliothèques Spring et tierces dans la mesure du possible.
●Il fournit des fonctionnalités prêtes à la production telles que metrics, health checks et la
configuration externalisée.
●Absolument aucune exigence de configuration XML.
Partie 1
Cas d'utilisation
Cas d'utilisation
Partie 1
Projets connexes
Projets connexes
De la configuration à la sécurité, des applications Web au Big Data, quels que soient les
besoins d'infrastructure de votre application, il existe un projet Spring pour vous aider à la
créer. Commencez petit et utilisez uniquement ce dont vous avez besoin—Spring est de
conception modulaire. voir ici
Partie 1
Get started spring boot
Installation de IntelliJ IDEA
Installation de IntelliJ IDEA Community Edition
IntelliJ IDEA est un IDE intelligent et tenant compte du contexte qui permet de travailler sur
toutes sortes d'applications en Java et dans d'autres langages de la JVM tels que Kotlin, Scala
et Groovy. De plus, IntelliJ IDEA vous aide à développer des applications web full-stack grâce
à ses puissants outils intégrés, à la prise en charge de JavaScript et de ses technologies
connexes et à la prise en charge avancée de frameworks populaires tels que Spring, Spring
Boot, Jakarta EE, Micronaut, Quarkus et Helidon.
●Installer JetBrains Toolbox App
●Ouvrir JetBrains Toolbox et installer IntelliJ IDEA Community Edition
Installation de JDK 11
Installation de Java development kit 11
Le Java Development Kit (JDK) désigne un ensemble de bibliothèques logicielles de base du
langage de programmation Java, ainsi que les outils avec lesquels le code Java peut être
compilé, transformé en bytecode destiné à la machine virtuelle Java.
●Installer Liberica JDK
Get started spring boot
Objectif
Vous allez construire un classique
"Hello World!" point de terminaison
auquel n'importe quel navigateur
peut se connecter. Vous pouvez
même lui dire votre nom et il
répondra de manière plus amicale.
Prérequis
●An Integrated Developer
Environment (IDE) IntelliJ IDEA
●A Java™ Development Kit (JDK)
●Use start.spring.io
●tutoriel
Partie 2
Spring Data JPA ?
Spring Data JPA
JPA
Spring Data JPA, qui fait partie de la grande famille Spring Data, facilite la mise en œuvre de
référentiels basés sur JPA. Ce module traite de la prise en charge améliorée des couches
d'accès aux données basées sur JPA. Il facilite la création d'applications alimentées par Spring
qui utilisent des technologies d'accès aux données.
Java Persistence API (JPA) est juste une spécification qui facilite le mappage objet-
relationnel pour gérer les données relationnelles dans les applications Java. Il fournit une
plate-forme pour travailler directement avec des objets au lieu d'utiliser des instructions SQL.
Spring Data JPA
Spring Boot Flow Architecture
Spring Data JPA
Spring Boot Flow Architecture
Spring Data JPA
Connection à postgreSQL
le fichier application.properties
Partie 3
●C’est quoi API REST ?
●Spring Data Rest
●Les projections
●Les validations
Partie 3
C’est quoi API REST ?
C’est quoi API REST ?
API REST
l’API ou Application Program Interface est, comme son nom l’indique, une interface servant
à communiquer entre deux ou plusieurs applications (appareils, services, etc.) distinctes. Elle
permet d’effectuer une requête spécifique et de recevoir une réponse, formulée sous un
format établi.
REST signifie Representational State Transfer (ou transfert d’état de représentation, en
français), et constitue un ensemble de normes, ou de lignes directrices architecturales qui
structurent la façon de communiquer les données entre votre application et le reste du
monde, ou entre différents composants de votre application.
C’est quoi API REST ?
Les verbes et les codes
Dans le protocole HTTP, il existe une dizaine de verbes (ou méthodes) qui représentent les
actions à effectuer sur les ressources. Les plus connus et utilisés sont GET, POST, PUT,
DELETE et PATCH.
En fonction du traitement de la requête, le serveur répondra avec un code HTTP différent. Il
existe 5 grandes familles de code HTTP :
●1XX : information
●2XX : succès
●3XX : redirection
●4XX : erreur côté client
●5XX : erreur côté serveur
C’est quoi API REST ?
Les verbes et les codes
Partie 3
Spring Data Rest
Spring Data Rest
Spring Data Rest
L’objectif principal est de simplifier autant que possible l’exposition d’une ressource grâce à
l’utilisation de l’API REST.
Spring Data REST s'appuie sur les Spring Data repository, analyse les entités de votre
application et expose les ressources HTTP hypermédia.
Pour créer le endpoint ainsi que les différentes méthodes HTTP de l’API, Spring Data REST
s’appuie sur les principes du REST et du HATEOAS ( Hypermédia le moteur d’état de l’
application ), un principe qui introduit tout simplement des transitions possibles entre les
différents états d’une même ressource, ainsi qu’entre les ressources elles-mêmes afin de
faciliter l’utilisation de l’API.
Spring Data Rest
Spring Data Rest
Partie 3
Les projections
Les projections
Projections
Spring Data REST présente une vue par défaut du modèle de domaine que vous exportez.
Cependant, vous devrez parfois modifier la vue de ce modèle pour diverses raisons. Cette
section explique comment définir des projections et des extraits pour proposer des vues
simplifiées et réduites des ressources.
Partie 3
Les validations
Les validations
Validations
La validation est une exigence commune à tous les services. Elle permet de vérifier les
éléments de données qui arrivent dans notre application à partir de sources externes et
vérifier si leurs valeurs sont acceptables.
Ex: Lorsque nous recevons une demande de création d'un utilisateur, nous devons valider son
contenu. S'il n'est pas valide, nous devons renvoyer une réponse appropriée.
Partie 4
●C’est quoi une authentification ?
●C’est quoi une autorisation ?
●C’est quoi Spring Security ?
Partie 4
C’est quoi une authentification ?
C’est quoi une authentification ?
authentification
L'authentification permet de s’assurer que l’utilisateur dispose des bonnes informations pour
prouver qu’il est bien la personne qu’il prétend être.
L’authentification par session (statfull) utilise des cookies pour stocker les informations de
l’utilisateur de la session. Ces cookies sont eux-mêmes stockés dans le navigateur de
l’utilisateur, et sur le serveur d’autorisation.
L’authentification par token(statless) utilise un JWT transmis par le serveur d’autorisation.
Ce JWT est utilisé pour valider la connexion de l’utilisateur, et peut être stocké directement
dans le navigateur, mais il est préférable qu’il soit stocké dans un httpOnly cookie.
Partie 4
C’est quoi une autorisation ?
C’est quoi une autorisation ?
autorisation
L’autorisation permet de s’assurer que l’utilisateur authentifié se rend uniquement sur les
pages qu’il est autorisé à consulter.
Partie 4
C’est quoi Spring Security ?
C’est quoi Spring Security ?
Spring Security
Spring Security est un framework garantissant une solution facile d’utilisation pour les
applications Java, en particulier avec Spring Boot. Il permet de configurer Spring pour
prévenir les attaques en ayant recours à très peu, voire à aucune configuration.
Allez plus loins
Allez plus loins
●API versioning
●API Caching
●OAuth 2.0
Source
Liens
●Spring Data REST Reference Guide
●How does orphanRemoval work with JPA and Hibernate
●Spring Boot Tutorials
●http://github.com/spring-projects
●https://docs.spring.io/spring-
boot/docs/current/reference/htmlsingle/
●Spring Boot Tutorial
●Spring IO
●Créez une application Java avec Spring Boot
Source
Liens
●Construisez des microservices
●HATEOAS
●SOLID Principles
●Spring Security Method
●Spring Boot Architecture – Detailed Explanation
Dépot Github
Liens
●Projet code sources
●java-spring-security-example
●spring-security-registration
●springboilerplate
●spring-cloud-gateway-security-jwt
Merci !
https://gdg.community.dev/gdg-
libreville/
#GDGLibreville
@gdglibreville

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWS
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 

Similar a Spring Boot RestApi.pptx

Similar a Spring Boot RestApi.pptx (20)

spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG Montpellier
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
TFS
TFSTFS
TFS
 
Java Fx
Java FxJava Fx
Java Fx
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
 
Java j2ee
Java j2eeJava j2ee
Java j2ee
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 

Spring Boot RestApi.pptx

  • 3. Sommaire ●Partie 1 : Introduction à Spring Boot ●Partie 2 : Spring Data JPA ●Partie 3 : Spring Data REST ●Partie 4 : Spring Security
  • 4. Partie 1 ●C’est quoi Spring Boot ? ●Pourquoi doit-on utiliser Spring Boot ? ●Fonctionnalités de Spring Boot ●Cas d'utilisation ●Projets connexes ●Get started spring boot
  • 5. Partie 1 C’est quoi Spring Boot ?
  • 6. C’est quoi Spring Boot ? Spring Boot ●Spring Boot est un projet qui est construit au-dessus du framework Spring. Il offre un moyen plus simple et plus rapide de configurer et d’exécuter des applications simples basées sur le Web. ●C’est un module Spring qui fournit la fonction RAD (Rapid Application Development) au Spring Framework. ●Il est utilisé pour créer une application autonome basée sur Spring que vous pouvez simplement exécuter car elle nécessite une configuration Spring minimale. ●Spring Boot = Spring + Serveurs Web intégrés (Jetty, Tomcat) – Confguration XML des Bean( et @Configuration)
  • 7. Partie 1 Pourquoi doit-on utiliser Spring Boot ?
  • 8. Pourquoi utiliser Spring Boot ? Spring est partout Les bibliothèques flexibles de Spring sont approuvées par les développeurs du monde entier. Spring offre chaque jour de délicieuses expériences à des millions d'utilisateurs finaux, qu'il s'agisse de la télévision en streaming, des achats en ligne ou d'innombrables autres solutions innovantes. Spring a également des contributions de tous les grands noms de la technologie, notamment Alibaba, Amazon, Google, Microsoft, etc.
  • 9. Pourquoi utiliser Spring Boot ? Spring est flexible L'ensemble flexible et complet d'extensions et de bibliothèques tierces de Spring permet aux développeurs de créer presque toutes les applications imaginables. Que vous créiez des microservices sécurisés, réactifs, basés sur le cloud pour le Web, ou des flux de données de streaming complexes pour l'entreprise, Spring a les outils pour vous aider.
  • 10. Pourquoi utiliser Spring Boot ? Spring est productif Spring Boot transforme votre approche de programmation Java, rationalisant radicalement votre expérience. Spring Boot combine des nécessités telles qu'un contexte d'application, un serveur Web intégré configuré automatiquement pour faire du développement de microservices un jeu d'enfant en un temps record.
  • 11. Pourquoi utiliser Spring Boot ? Spring est rapide Spring Boot aide les développeurs à créer des applications facilement et avec beaucoup moins d'efforts que d'autres paradigmes concurrents. Les serveurs Web intégrés, la configuration automatique et les « fat jars » vous aident à démarrer rapidement, et des innovations telles que LiveReload dans Spring DevTools permettent aux développeurs d'itérer plus rapidement que jamais. Vous pouvez même démarrer un nouveau projet Spring en quelques secondes, avec Spring Initializr sur start.spring.io.
  • 12. Pourquoi utiliser Spring Boot ? Spring est sécurisé Spring a fait ses preuves dans la gestion rapide et responsable des problèmes de sécurité. Les committers de Spring travaillent avec des professionnels de la sécurité pour corriger et tester toutes les vulnérabilités signalées. Les dépendances tierces sont également surveillées de près et des mises à jour régulières sont publiées pour aider à garder vos données et applications aussi sûres que possible. De plus, Spring Security vous permet de vous intégrer plus facilement aux systèmes de sécurité standard de l'industrie et de fournir des solutions fiables et sécurisées par défaut.
  • 13. Pourquoi utiliser Spring Boot ? Spring à une grande communauté La communauté Spring est énorme, mondiale, diversifiée et comprend des personnes de tous âges et de toutes capacités, des débutants complets aux professionnels chevronnés. Où que vous en soyez dans votre parcours, vous pouvez trouver l'assistance et les ressources dont vous avez besoin pour passer au niveau supérieur : démarrages rapides, guides et didacticiels, vidéos, meetups, assistance ou même formation et certification formelles.
  • 15. Fonctionnalités de Spring Boot Spring Boot ●Il crée des applications Spring autonomes qui peuvent être démarrées en utilisant Java -jar. ●Il embarque différents serveurs HTTP tels que Tomcat, Jetty. Nous n’avons pas besoin de déployer des fichiers WAR. ●Il fournit des 'starter' pour simplifier la construction de notre configuration. ●Configure automatiquement les bibliothèques Spring et tierces dans la mesure du possible. ●Il fournit des fonctionnalités prêtes à la production telles que metrics, health checks et la configuration externalisée. ●Absolument aucune exigence de configuration XML.
  • 19. Projets connexes De la configuration à la sécurité, des applications Web au Big Data, quels que soient les besoins d'infrastructure de votre application, il existe un projet Spring pour vous aider à la créer. Commencez petit et utilisez uniquement ce dont vous avez besoin—Spring est de conception modulaire. voir ici
  • 20. Partie 1 Get started spring boot
  • 21. Installation de IntelliJ IDEA Installation de IntelliJ IDEA Community Edition IntelliJ IDEA est un IDE intelligent et tenant compte du contexte qui permet de travailler sur toutes sortes d'applications en Java et dans d'autres langages de la JVM tels que Kotlin, Scala et Groovy. De plus, IntelliJ IDEA vous aide à développer des applications web full-stack grâce à ses puissants outils intégrés, à la prise en charge de JavaScript et de ses technologies connexes et à la prise en charge avancée de frameworks populaires tels que Spring, Spring Boot, Jakarta EE, Micronaut, Quarkus et Helidon. ●Installer JetBrains Toolbox App ●Ouvrir JetBrains Toolbox et installer IntelliJ IDEA Community Edition
  • 22.
  • 23. Installation de JDK 11 Installation de Java development kit 11 Le Java Development Kit (JDK) désigne un ensemble de bibliothèques logicielles de base du langage de programmation Java, ainsi que les outils avec lesquels le code Java peut être compilé, transformé en bytecode destiné à la machine virtuelle Java. ●Installer Liberica JDK
  • 24. Get started spring boot Objectif Vous allez construire un classique "Hello World!" point de terminaison auquel n'importe quel navigateur peut se connecter. Vous pouvez même lui dire votre nom et il répondra de manière plus amicale. Prérequis ●An Integrated Developer Environment (IDE) IntelliJ IDEA ●A Java™ Development Kit (JDK) ●Use start.spring.io ●tutoriel
  • 26. Spring Data JPA JPA Spring Data JPA, qui fait partie de la grande famille Spring Data, facilite la mise en œuvre de référentiels basés sur JPA. Ce module traite de la prise en charge améliorée des couches d'accès aux données basées sur JPA. Il facilite la création d'applications alimentées par Spring qui utilisent des technologies d'accès aux données. Java Persistence API (JPA) est juste une spécification qui facilite le mappage objet- relationnel pour gérer les données relationnelles dans les applications Java. Il fournit une plate-forme pour travailler directement avec des objets au lieu d'utiliser des instructions SQL.
  • 27. Spring Data JPA Spring Boot Flow Architecture
  • 28. Spring Data JPA Spring Boot Flow Architecture
  • 29. Spring Data JPA Connection à postgreSQL le fichier application.properties
  • 30. Partie 3 ●C’est quoi API REST ? ●Spring Data Rest ●Les projections ●Les validations
  • 31. Partie 3 C’est quoi API REST ?
  • 32. C’est quoi API REST ? API REST l’API ou Application Program Interface est, comme son nom l’indique, une interface servant à communiquer entre deux ou plusieurs applications (appareils, services, etc.) distinctes. Elle permet d’effectuer une requête spécifique et de recevoir une réponse, formulée sous un format établi. REST signifie Representational State Transfer (ou transfert d’état de représentation, en français), et constitue un ensemble de normes, ou de lignes directrices architecturales qui structurent la façon de communiquer les données entre votre application et le reste du monde, ou entre différents composants de votre application.
  • 33. C’est quoi API REST ? Les verbes et les codes Dans le protocole HTTP, il existe une dizaine de verbes (ou méthodes) qui représentent les actions à effectuer sur les ressources. Les plus connus et utilisés sont GET, POST, PUT, DELETE et PATCH. En fonction du traitement de la requête, le serveur répondra avec un code HTTP différent. Il existe 5 grandes familles de code HTTP : ●1XX : information ●2XX : succès ●3XX : redirection ●4XX : erreur côté client ●5XX : erreur côté serveur
  • 34. C’est quoi API REST ? Les verbes et les codes
  • 36. Spring Data Rest Spring Data Rest L’objectif principal est de simplifier autant que possible l’exposition d’une ressource grâce à l’utilisation de l’API REST. Spring Data REST s'appuie sur les Spring Data repository, analyse les entités de votre application et expose les ressources HTTP hypermédia. Pour créer le endpoint ainsi que les différentes méthodes HTTP de l’API, Spring Data REST s’appuie sur les principes du REST et du HATEOAS ( Hypermédia le moteur d’état de l’ application ), un principe qui introduit tout simplement des transitions possibles entre les différents états d’une même ressource, ainsi qu’entre les ressources elles-mêmes afin de faciliter l’utilisation de l’API.
  • 39. Les projections Projections Spring Data REST présente une vue par défaut du modèle de domaine que vous exportez. Cependant, vous devrez parfois modifier la vue de ce modèle pour diverses raisons. Cette section explique comment définir des projections et des extraits pour proposer des vues simplifiées et réduites des ressources.
  • 41. Les validations Validations La validation est une exigence commune à tous les services. Elle permet de vérifier les éléments de données qui arrivent dans notre application à partir de sources externes et vérifier si leurs valeurs sont acceptables. Ex: Lorsque nous recevons une demande de création d'un utilisateur, nous devons valider son contenu. S'il n'est pas valide, nous devons renvoyer une réponse appropriée.
  • 42. Partie 4 ●C’est quoi une authentification ? ●C’est quoi une autorisation ? ●C’est quoi Spring Security ?
  • 43. Partie 4 C’est quoi une authentification ?
  • 44. C’est quoi une authentification ? authentification L'authentification permet de s’assurer que l’utilisateur dispose des bonnes informations pour prouver qu’il est bien la personne qu’il prétend être. L’authentification par session (statfull) utilise des cookies pour stocker les informations de l’utilisateur de la session. Ces cookies sont eux-mêmes stockés dans le navigateur de l’utilisateur, et sur le serveur d’autorisation. L’authentification par token(statless) utilise un JWT transmis par le serveur d’autorisation. Ce JWT est utilisé pour valider la connexion de l’utilisateur, et peut être stocké directement dans le navigateur, mais il est préférable qu’il soit stocké dans un httpOnly cookie.
  • 45. Partie 4 C’est quoi une autorisation ?
  • 46. C’est quoi une autorisation ? autorisation L’autorisation permet de s’assurer que l’utilisateur authentifié se rend uniquement sur les pages qu’il est autorisé à consulter.
  • 47. Partie 4 C’est quoi Spring Security ?
  • 48. C’est quoi Spring Security ? Spring Security Spring Security est un framework garantissant une solution facile d’utilisation pour les applications Java, en particulier avec Spring Boot. Il permet de configurer Spring pour prévenir les attaques en ayant recours à très peu, voire à aucune configuration.
  • 50. Allez plus loins ●API versioning ●API Caching ●OAuth 2.0
  • 51. Source Liens ●Spring Data REST Reference Guide ●How does orphanRemoval work with JPA and Hibernate ●Spring Boot Tutorials ●http://github.com/spring-projects ●https://docs.spring.io/spring- boot/docs/current/reference/htmlsingle/ ●Spring Boot Tutorial ●Spring IO ●Créez une application Java avec Spring Boot
  • 52. Source Liens ●Construisez des microservices ●HATEOAS ●SOLID Principles ●Spring Security Method ●Spring Boot Architecture – Detailed Explanation
  • 53. Dépot Github Liens ●Projet code sources ●java-spring-security-example ●spring-security-registration ●springboilerplate ●spring-cloud-gateway-security-jwt