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

Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esbLilia Sfaxi
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Ramzi Noumairi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
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 ...ENSET, Université Hassan II Casablanca
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpelLilia Sfaxi
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 

Tendances (20)

Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esb
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
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
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
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
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpel
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 

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

API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
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
 

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
 
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
 

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