rest : modèle de maturité de richardson, pour évaluer la restitude de votre api

25
REST Modèle de maturité de Richardson Pour évaluer la RESTitude de votre API Par : Ouadie LAHDIOUI - Le : 25/11/2015

Upload: ouadie-lahdioui

Post on 09-Jan-2017

1.211 views

Category:

Internet


0 download

TRANSCRIPT

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

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

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

3

HTTPHYPERTEXT TRANSFERT PROTOCOL

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

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

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

6

RESTREPRESENTATIONAL STATE TRANSFERT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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