SlideShare une entreprise Scribd logo
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

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)
ENSET, Université Hassan II Casablanca
 
Les collections en Java
Les collections en JavaLes collections en Java
Les collections en Java
Papa Cheikh Cisse
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
Lilia Sfaxi
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
Ghazouani Mahdi
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
Amal Abid
 
Power shell training
Power shell trainingPower shell training
Power shell training
David Brabant
 
COURS INITIATION A L'ALGORITHME ET PROGRAMMATION.06.12.21.pptx
COURS INITIATION A L'ALGORITHME ET  PROGRAMMATION.06.12.21.pptxCOURS INITIATION A L'ALGORITHME ET  PROGRAMMATION.06.12.21.pptx
COURS INITIATION A L'ALGORITHME ET PROGRAMMATION.06.12.21.pptx
ITNAV1
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
Hassan WAHSISS
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
Sana Aroussi
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
Linaro
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
ENSET, Université Hassan II Casablanca
 
Java
JavaJava
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
webreaker
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
YoussefJamma
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
MongoDB
 
Cours 2 conception d'une ihm
Cours 2   conception d'une ihm Cours 2   conception d'une ihm
Cours 2 conception d'une ihm
ludolmn
 
Initiation r
Initiation rInitiation r
Базы данных в 2020
Базы данных в 2020Базы данных в 2020
Базы данных в 2020
Timur Shemsedinov
 

Tendances (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)
 
Les collections en Java
Les collections en JavaLes collections en Java
Les collections en Java
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
Power shell training
Power shell trainingPower shell training
Power shell training
 
COURS INITIATION A L'ALGORITHME ET PROGRAMMATION.06.12.21.pptx
COURS INITIATION A L'ALGORITHME ET  PROGRAMMATION.06.12.21.pptxCOURS INITIATION A L'ALGORITHME ET  PROGRAMMATION.06.12.21.pptx
COURS INITIATION A L'ALGORITHME ET PROGRAMMATION.06.12.21.pptx
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Java
JavaJava
Java
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
 
Cours 2 conception d'une ihm
Cours 2   conception d'une ihm Cours 2   conception d'une ihm
Cours 2 conception d'une ihm
 
Initiation r
Initiation rInitiation r
Initiation r
 
Базы данных в 2020
Базы данных в 2020Базы данных в 2020
Базы данных в 2020
 

En vedette

Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
Ouadie 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ée
Ouadie 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 patterns
Ouadie LAHDIOUI
 
Prismic
PrismicPrismic
AngularJS
AngularJSAngularJS
AngularJS
Ouadie LAHDIOUI
 
Infantil
InfantilInfantil
Infantil
Jordi Masnou
 
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
Jean-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
 
Debug like a doctor
Debug like a doctorDebug like a doctor
Debug like a doctor
Ouadie LAHDIOUI
 
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
Rakesh Gupta
 
Using Apex for REST Integration
Using Apex for REST IntegrationUsing Apex for REST Integration
Using Apex for REST Integration
Salesforce Developers
 
Indice de maturité du eCommerce
Indice de maturité du eCommerceIndice de maturité du eCommerce
Indice de maturité du eCommerce
Farid Mheir
 
SalesForce WebServices part 2
SalesForce WebServices part 2SalesForce WebServices part 2
SalesForce WebServices part 2
Mindfire Solutions
 
Secure Salesforce: External App Integrations
Secure Salesforce: External App IntegrationsSecure Salesforce: External App Integrations
Secure Salesforce: External App Integrations
Salesforce Developers
 
REST API in Salesforce
REST API in SalesforceREST API in Salesforce
REST API in Salesforce
Vivek Deepak
 
Exploring the Salesforce REST API
Exploring the Salesforce REST APIExploring the Salesforce REST API
Exploring the Salesforce REST API
Salesforce Developers
 
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 Authentication
Salesforce 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

API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
Fadel Chafai
 
Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful Architecture
Brisebois
 
Restful, really ? MixIt 2014
Restful, really ? MixIt 2014Restful, really ? MixIt 2014
Restful, really ? MixIt 2014
Xavier 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 - Iteracode
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
Gautier 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 technique
Nicolas Juen
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
DNG 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 futur
Microsoft
 
RESTful API - Retour d'expérience
RESTful API - Retour d'expérienceRESTful API - Retour d'expérience
RESTful API - Retour d'expérience
Christophe Laprun
 
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdfwebservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
KHALIDBENABBES1
 
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdfsqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
KHALIDBENABBES1
 
Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest Symfony2 & l'architecture Rest
Symfony2 & l'architecture Rest
Ahmed Ghali
 
HTTP et REST
HTTP et RESTHTTP et REST
HTTP et REST
Luc Trudeau
 
É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 2019
Maxime Lefrançois
 
Le design d'API avec Mulesoft
Le design d'API avec MulesoftLe design d'API avec Mulesoft
Le design d'API avec Mulesoft
SpikeeLabs
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-to
Damien 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 WebSSO
Clément OUDOT
 

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

API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful Architecture
 
7 rest
7 rest7 rest
7 rest
 
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
 
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdfwebservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
 
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdfsqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
 
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
 

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