rest : modèle de maturité de richardson, pour évaluer la restitude de votre api
TRANSCRIPT
![Page 1: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/1.jpg)
RESTModèle de maturité de Richardson
Pour évaluer la RESTitude de votre API
Par : Ouadie LAHDIOUI - Le : 25/11/2015
![Page 2: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/2.jpg)
2
AVEZ-VOUS DÉJÀ DÉVELOPPÉ UNE API RESTFUL ?
![Page 3: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/3.jpg)
3
HTTPHYPERTEXT TRANSFERT PROTOCOL
![Page 4: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/4.jpg)
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
![Page 5: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/5.jpg)
5<Version> - <Date>© SQLI Enterprise – SQLI GROUP | 2015 Source : http://restlet.com/http-status-codes-map
![Page 6: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/6.jpg)
6
RESTREPRESENTATIONAL STATE TRANSFERT
![Page 7: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/7.jpg)
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
![Page 8: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/8.jpg)
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
![Page 9: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/9.jpg)
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
![Page 10: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/10.jpg)
10
MODÈLE DE MATURITÉ DE RICHARDSONEXEMPLE PUBLIÉ PAR MARTIN FOWLER
![Page 11: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/11.jpg)
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
![Page 12: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/12.jpg)
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
![Page 13: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/13.jpg)
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
![Page 14: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/14.jpg)
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
![Page 15: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/15.jpg)
2/2
NIVEAU 1 - RESSOURCES
15REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
1 2
3
![Page 16: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/16.jpg)
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
![Page 17: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/17.jpg)
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
![Page 18: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/18.jpg)
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)
![Page 19: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/19.jpg)
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
![Page 20: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/20.jpg)
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
![Page 21: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/21.jpg)
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
![Page 22: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/22.jpg)
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.
![Page 23: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/23.jpg)
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
![Page 24: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/24.jpg)
24
BON ALORS, VOTRE API EST-ELLE TOUJOURS RESTFUL ?
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
![Page 25: REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API](https://reader035.vdocuments.site/reader035/viewer/2022081721/5872b3741a28ab523c8b601f/html5/thumbnails/25.jpg)
25
MERCI
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