SlideShare une entreprise Scribd logo
1  sur  25
REST
Modèle de maturité de Richardson
Pour évaluer la RESTitude de votre API
Par : Ouadie LAHDIOUI - Le : 25/11/2015
AVEZ-VOUS DÉJÀ DÉVELOPPÉ
UNE API RESTFUL ?
2
HTTP
3
HYPERTEXT TRANSFERT PROTOCOL
HYPERTEXT TRANSFERT PROTOCOL
RAPPELS SUR HTTP
4
+ Stateless
+ Half duplex
+ Requêtes / Réponses
+ Méthodes idempotentes et/ou sûres
+ Codes de retour
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
<Version> - <Date>© SQLI Enterprise – SQLI GROUP | 2015 5Source : http://restlet.com/http-status-codes-map
REST
6
REPRESENTATIONAL STATE TRANSFERT
REPRESENTATIONAL STATE TRANSFERT
REST
7
+ Un ensembles de principes définis dans la thèse de Roy Fielding dans les années 2000
+ Roy Fielding est l’un des 8 fondateurs de la fondation Apache
+ REST est
Ensemble de conventions et de bonnes pratiques à respecter
Style d’architecture : structurant, efficace, évolutif et indépendant des mises en œuvre
Une approche pour construire une API
+ REST n’est surtout pas
Un format
Un protocole
Un standard
Une technologie à part entière
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
LES CONTRAINTES DE ROY FIELDING
8
1. Le serveur et le client sont indépendants. L'interface utilisateur est situé côté client et le
stockage est située côté serveur
2. Stateless = Aucune variable de session ou autre état volatile ne doit être enregistré côté
serveur
3. Mise en cache
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1/2
LES CONTRAINTES DE ROY FIELDING
9
4. Une interface uniforme :
+ Une identification des ressources.
+ Les ressources sont manipulées via des représentations
+ Auto-description
+ Hypermédia comme moteur d'application (HATEOAS)
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
6. Code à la demande (optionnelle)
2/2
5. Architecture multi-couches
MODÈLE DE MATURITÉ DE RICHARDSON
10
EXEMPLE PUBLIÉ PAR MARTIN FOWLER
RICHARDSON MATURITY MODEL
LE MODÈLE DE MATURITÉ DE RICHARDSON
11
+ Développé par Léonard Richardson
+ Il compte 4 niveaux (0-3), où le niveau 3 représente une vraie API RESTful
+ Ces 4 niveaux permettent d’évaluer une API par rapport aux contraintes REST
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1/2 PLAIN OLD XML
NIVEAU 0 - LE RPC SUR HTTP EN POX
12
+ Le protocole est uniquement utilisé à des fins de transport du message
+ Tout circule via un seul et unique point d’entrée
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Niveau 0 : État basique avec des XML dans tous les sens
2/2 PLAIN OLD XML
NIVEAU 0 - LE RPC SUR HTTP EN POX
13REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1
2
3
4
5
1/2
NIVEAU 1 - RESSOURCES
14
+ Resources sont identifiées avec URI
+ Pas de sémantique
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Niveau 1 : Ajout de la notion de ressources
2/2
NIVEAU 1 - RESSOURCES
15REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1 2
3
1/2
NIVEAU 2 - VERBES ET CODES RETOURS HTTP
16
+ Multiples resources
+ Utilisation sémantiquement correcte des verbes HTTP
+ Utilisation correcte des code de réponse
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Niveau 2 : Ajout de verbes de statut et de codes d’état
NIVEAU 2 - VERBES ET CODES RETOURS HTTP
17REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1
2
3
4
5
2/2
1/2 HYPERTEXT AS THE ENGINE OF APPLICATION STATE
NIVEAU 3 - CONTRÔLE HYPERMEDIA (HATEOAS)
18
+ Formats hypermedias : HTML, HAL, JSON-LD
+ Resources auto-descriptives
+ État et comportement accessible via les représentations
+ HATEOAS
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Niveau 3 : Contrôle hypermedia (HATEOAS)
2/2 HYPERTEXT AS THE ENGINE OF APPLICATION STATE
NIVEAU 3 - CONTRÔLE HYPERMEDIA (HATEOAS)
19REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1
2
3
4
RESSOURCE VS PRÉSENTATION
20
+ Représentation = représente l’état de la ressource
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Selon Roy, une ressource peut être n’import quoi :
+ Négociation de contenu
API RESTFUL
21
+ Une API qui respecte les principes de l’architecture REST
+ Techniquement, on doit parler d’API RESTful, pas d’API REST
+ Si votre API n’est pas de niveau 3, ne prétendez pas faire du REST car c’est faux
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
API RESTFUL
22
+ Si votre API se contente de renvoyer juste des objets sérialisés au format JSON/XML/…
parlez simplement d’API ou d’ API HTTP !
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Il est possible d’utiliser divers protocoles de transfert tels que SNMP, SMTP et d’autres, et
votre API restera bel et bien une API RESTful.
MON API EST RESTFUL LORSQUE J’UTILISE JSON ?
23
+ Réponse courte : non
+ Réponse longue : non
+ JSON n’est pas un format hypermédia
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
+ Des travaux de standardisation sont en cours pour rendre JSON hypermédia :
+ JSON-LD
+ HAL : Hypertext Application Language
+ SIREN
24
BON ALORS, VOTRE API EST-ELLE TOUJOURS RESTFUL ?
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
MERCI
25
Pour aller plus loin… :
• Thèse de Roy T. Fielding : Architectural Styles and the Design of Network-based SoftwareSources :
• Blog de Leonard Richardson
• Blog de Martin Fowler sur le RMM
• Nobody understands REST but it is ok ;-) - par William Durand
• Api hypermedia par David MARTIN - Devoxx FR 2015
• The never-ending REST API design debate by Guillaume Laforge

Contenu connexe

Tendances

Support du cours : Programmation Web 2
Support du cours : Programmation Web 2Support du cours : Programmation Web 2
Support du cours : Programmation Web 2Faycel Chaoua
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Faycel Chaoua
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services webCHOUAIB EL HACHIMI
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOALilia Sfaxi
 
Spécifications Fonctionnelles Détaillées du projet Youfood
Spécifications Fonctionnelles Détaillées du projet YoufoodSpécifications Fonctionnelles Détaillées du projet Youfood
Spécifications Fonctionnelles Détaillées du projet YoufoodFlorian GRONDIN
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 

Tendances (20)

Support du cours : Programmation Web 2
Support du cours : Programmation Web 2Support du cours : Programmation Web 2
Support du cours : Programmation Web 2
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
7 rest
7 rest7 rest
7 rest
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Cours Génie Logiciel - Introduction
Cours Génie Logiciel - IntroductionCours Génie Logiciel - Introduction
Cours Génie Logiciel - Introduction
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
Spécifications Fonctionnelles Détaillées du projet Youfood
Spécifications Fonctionnelles Détaillées du projet YoufoodSpécifications Fonctionnelles Détaillées du projet Youfood
Spécifications Fonctionnelles Détaillées du projet Youfood
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Docker
DockerDocker
Docker
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 

En vedette

Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the futureOuadie LAHDIOUI
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeOuadie LAHDIOUI
 
Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsOuadie LAHDIOUI
 
IMCV - Indice de Maturité de la Culture vente
IMCV - Indice de Maturité de la Culture venteIMCV - Indice de Maturité de la Culture vente
IMCV - Indice de Maturité de la Culture venteJean-Pierre Conduché
 
Faire évoluer la maturité des process ICP (incidents changements et problè...
Faire  évoluer la maturité des process ICP (incidents changements et problè...Faire  évoluer la maturité des process ICP (incidents changements et problè...
Faire évoluer la maturité des process ICP (incidents changements et problè...SAID BELKAID
 
Navi Mumbai Salesforce DUG meetup on integration
Navi Mumbai Salesforce DUG meetup on integrationNavi Mumbai Salesforce DUG meetup on integration
Navi Mumbai Salesforce DUG meetup on integrationRakesh Gupta
 
Indice de maturité du eCommerce
Indice de maturité du eCommerceIndice de maturité du eCommerce
Indice de maturité du eCommerceFarid Mheir
 
Secure Salesforce: External App Integrations
Secure Salesforce: External App IntegrationsSecure Salesforce: External App Integrations
Secure Salesforce: External App IntegrationsSalesforce Developers
 
REST API in Salesforce
REST API in SalesforceREST API in Salesforce
REST API in SalesforceVivek Deepak
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)Yacine Rezgui
 
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...PMI-Montréal
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationSalesforce Developers
 

En vedette (20)

Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patterns
 
Prismic
PrismicPrismic
Prismic
 
AngularJS
AngularJSAngularJS
AngularJS
 
Infantil
InfantilInfantil
Infantil
 
IMCV - Indice de Maturité de la Culture vente
IMCV - Indice de Maturité de la Culture venteIMCV - Indice de Maturité de la Culture vente
IMCV - Indice de Maturité de la Culture vente
 
Faire évoluer la maturité des process ICP (incidents changements et problè...
Faire  évoluer la maturité des process ICP (incidents changements et problè...Faire  évoluer la maturité des process ICP (incidents changements et problè...
Faire évoluer la maturité des process ICP (incidents changements et problè...
 
Debug like a doctor
Debug like a doctorDebug like a doctor
Debug like a doctor
 
Navi Mumbai Salesforce DUG meetup on integration
Navi Mumbai Salesforce DUG meetup on integrationNavi Mumbai Salesforce DUG meetup on integration
Navi Mumbai Salesforce DUG meetup on integration
 
Using Apex for REST Integration
Using Apex for REST IntegrationUsing Apex for REST Integration
Using Apex for REST Integration
 
Indice de maturité du eCommerce
Indice de maturité du eCommerceIndice de maturité du eCommerce
Indice de maturité du eCommerce
 
SalesForce WebServices part 2
SalesForce WebServices part 2SalesForce WebServices part 2
SalesForce WebServices part 2
 
Secure Salesforce: External App Integrations
Secure Salesforce: External App IntegrationsSecure Salesforce: External App Integrations
Secure Salesforce: External App Integrations
 
REST API in Salesforce
REST API in SalesforceREST API in Salesforce
REST API in Salesforce
 
Exploring the Salesforce REST API
Exploring the Salesforce REST APIExploring the Salesforce REST API
Exploring the Salesforce REST API
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...
CdeP GESTION ORGANISATIONNELLE DE PROJET : Diagnostic maturité (11 septembre...
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social Authentication
 

Similaire à REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API

Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful ArchitectureBrisebois
 
Restful, really ? MixIt 2014
Restful, really ? MixIt 2014Restful, really ? MixIt 2014
Restful, really ? MixIt 2014Xavier Carpentier
 
À la découverte des API - Louis Viart - Iteracode
À la découverte des API - Louis Viart - IteracodeÀ la découverte des API - Louis Viart - Iteracode
À la découverte des API - Louis Viart - IteracodeIteracode
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
 
Wordcamp paris 2016 - La REST API, une review technique
Wordcamp paris 2016 - La REST API, une review techniqueWordcamp paris 2016 - La REST API, une review technique
Wordcamp paris 2016 - La REST API, une review techniqueNicolas Juen
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurMicrosoft
 
RESTful API - Retour d'expérience
RESTful API - Retour d'expérienceRESTful API - Retour d'expérience
RESTful API - Retour d'expérienceChristophe Laprun
 
Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Ahmed Ghali
 
ÉVolution d'un système de publication de données techniques automobiles, modé...
ÉVolution d'un système de publication de données techniques automobiles, modé...ÉVolution d'un système de publication de données techniques automobiles, modé...
ÉVolution d'un système de publication de données techniques automobiles, modé...SemWebPro
 
SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019Maxime Lefrançois
 
Le design d'API avec Mulesoft
Le design d'API avec MulesoftLe design d'API avec Mulesoft
Le design d'API avec MulesoftSpikeeLabs
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-toDamien Cavaillès
 
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSOSL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSOClément OUDOT
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletJerome Louvel
 

Similaire à REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API (20)

Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful Architecture
 
Restful, really ? MixIt 2014
Restful, really ? MixIt 2014Restful, really ? MixIt 2014
Restful, really ? MixIt 2014
 
À la découverte des API - Louis Viart - Iteracode
À la découverte des API - Louis Viart - IteracodeÀ la découverte des API - Louis Viart - Iteracode
À la découverte des API - Louis Viart - Iteracode
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
Wordcamp paris 2016 - La REST API, une review technique
Wordcamp paris 2016 - La REST API, une review techniqueWordcamp paris 2016 - La REST API, une review technique
Wordcamp paris 2016 - La REST API, une review technique
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futur
 
RESTful API - Retour d'expérience
RESTful API - Retour d'expérienceRESTful API - Retour d'expérience
RESTful API - Retour d'expérience
 
Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest
 
HTTP et REST
HTTP et RESTHTTP et REST
HTTP et REST
 
ÉVolution d'un système de publication de données techniques automobiles, modé...
ÉVolution d'un système de publication de données techniques automobiles, modé...ÉVolution d'un système de publication de données techniques automobiles, modé...
ÉVolution d'un système de publication de données techniques automobiles, modé...
 
SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019
 
Le design d'API avec Mulesoft
Le design d'API avec MulesoftLe design d'API avec Mulesoft
Le design d'API avec Mulesoft
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-to
 
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSOSL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
SL2009 - Identity Management Cycle - LDAP synchronization and WebSSO
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
 
Soap
SoapSoap
Soap
 

REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API

  • 1. REST Modèle de maturité de Richardson Pour évaluer la RESTitude de votre API Par : Ouadie LAHDIOUI - Le : 25/11/2015
  • 4. HYPERTEXT TRANSFERT PROTOCOL RAPPELS SUR HTTP 4 + Stateless + Half duplex + Requêtes / Réponses + Méthodes idempotentes et/ou sûres + Codes de retour REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
  • 5. <Version> - <Date>© SQLI Enterprise – SQLI GROUP | 2015 5Source : http://restlet.com/http-status-codes-map
  • 7. REPRESENTATIONAL STATE TRANSFERT REST 7 + Un ensembles de principes définis dans la thèse de Roy Fielding dans les années 2000 + Roy Fielding est l’un des 8 fondateurs de la fondation Apache + REST est Ensemble de conventions et de bonnes pratiques à respecter Style d’architecture : structurant, efficace, évolutif et indépendant des mises en œuvre Une approche pour construire une API + REST n’est surtout pas Un format Un protocole Un standard Une technologie à part entière REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
  • 8. LES CONTRAINTES DE ROY FIELDING 8 1. Le serveur et le client sont indépendants. L'interface utilisateur est situé côté client et le stockage est située côté serveur 2. Stateless = Aucune variable de session ou autre état volatile ne doit être enregistré côté serveur 3. Mise en cache REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 1/2
  • 9. LES CONTRAINTES DE ROY FIELDING 9 4. Une interface uniforme : + Une identification des ressources. + Les ressources sont manipulées via des représentations + Auto-description + Hypermédia comme moteur d'application (HATEOAS) REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 6. Code à la demande (optionnelle) 2/2 5. Architecture multi-couches
  • 10. MODÈLE DE MATURITÉ DE RICHARDSON 10 EXEMPLE PUBLIÉ PAR MARTIN FOWLER
  • 11. RICHARDSON MATURITY MODEL LE MODÈLE DE MATURITÉ DE RICHARDSON 11 + Développé par Léonard Richardson + Il compte 4 niveaux (0-3), où le niveau 3 représente une vraie API RESTful + Ces 4 niveaux permettent d’évaluer une API par rapport aux contraintes REST REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
  • 12. 1/2 PLAIN OLD XML NIVEAU 0 - LE RPC SUR HTTP EN POX 12 + Le protocole est uniquement utilisé à des fins de transport du message + Tout circule via un seul et unique point d’entrée REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Niveau 0 : État basique avec des XML dans tous les sens
  • 13. 2/2 PLAIN OLD XML NIVEAU 0 - LE RPC SUR HTTP EN POX 13REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 1 2 3 4 5
  • 14. 1/2 NIVEAU 1 - RESSOURCES 14 + Resources sont identifiées avec URI + Pas de sémantique REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Niveau 1 : Ajout de la notion de ressources
  • 15. 2/2 NIVEAU 1 - RESSOURCES 15REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 1 2 3
  • 16. 1/2 NIVEAU 2 - VERBES ET CODES RETOURS HTTP 16 + Multiples resources + Utilisation sémantiquement correcte des verbes HTTP + Utilisation correcte des code de réponse REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Niveau 2 : Ajout de verbes de statut et de codes d’état
  • 17. NIVEAU 2 - VERBES ET CODES RETOURS HTTP 17REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 1 2 3 4 5 2/2
  • 18. 1/2 HYPERTEXT AS THE ENGINE OF APPLICATION STATE NIVEAU 3 - CONTRÔLE HYPERMEDIA (HATEOAS) 18 + Formats hypermedias : HTML, HAL, JSON-LD + Resources auto-descriptives + État et comportement accessible via les représentations + HATEOAS REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Niveau 3 : Contrôle hypermedia (HATEOAS)
  • 19. 2/2 HYPERTEXT AS THE ENGINE OF APPLICATION STATE NIVEAU 3 - CONTRÔLE HYPERMEDIA (HATEOAS) 19REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API 1 2 3 4
  • 20. RESSOURCE VS PRÉSENTATION 20 + Représentation = représente l’état de la ressource REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Selon Roy, une ressource peut être n’import quoi : + Négociation de contenu
  • 21. API RESTFUL 21 + Une API qui respecte les principes de l’architecture REST + Techniquement, on doit parler d’API RESTful, pas d’API REST + Si votre API n’est pas de niveau 3, ne prétendez pas faire du REST car c’est faux REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
  • 22. API RESTFUL 22 + Si votre API se contente de renvoyer juste des objets sérialisés au format JSON/XML/… parlez simplement d’API ou d’ API HTTP ! REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Il est possible d’utiliser divers protocoles de transfert tels que SNMP, SMTP et d’autres, et votre API restera bel et bien une API RESTful.
  • 23. MON API EST RESTFUL LORSQUE J’UTILISE JSON ? 23 + Réponse courte : non + Réponse longue : non + JSON n’est pas un format hypermédia REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API + Des travaux de standardisation sont en cours pour rendre JSON hypermédia : + JSON-LD + HAL : Hypertext Application Language + SIREN
  • 24. 24 BON ALORS, VOTRE API EST-ELLE TOUJOURS RESTFUL ? REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
  • 25. MERCI 25 Pour aller plus loin… : • Thèse de Roy T. Fielding : Architectural Styles and the Design of Network-based SoftwareSources : • Blog de Leonard Richardson • Blog de Martin Fowler sur le RMM • Nobody understands REST but it is ok ;-) - par William Durand • Api hypermedia par David MARTIN - Devoxx FR 2015 • The never-ending REST API design debate by Guillaume Laforge