15

Click here to load reader

Restful, really ? MixIt 2014

Embed Size (px)

DESCRIPTION

Tout le monde dit faire ou vouloir faire une architecture de type Rest, que cela implique-t-il vraiment ? Où vous situez-vous sur le "Richardson Maturity Model" ? Votre API est à la fois Hypermedia et JSON, « Are you kidding ? » Si ce sont des questions qui vous taraudent l'esprit et même vous empêchent de dormir, alors venez écouter ce talk pour avoir des pistes de réflexions, des échanges et peut-être des réponses, qui sait ?

Citation preview

Page 1: Restful, really ? MixIt 2014

#Restful, really ?Faire une architecture de type Rest, que cela implique-t-

il vraiment ?

Xavier Carpentier Twitter: @xcapetir [email protected]

Page 2: Restful, really ? MixIt 2014

Définition

• Representational State Transfer

• Rest est un style d'architecture client / serveur, en couches avec une interface uniforme, utilisant le cache et étant stateless

Page 3: Restful, really ? MixIt 2014

Contexte & implication

• Retour d'expérience développeur

• d'API :communication avec partenaires

• d'applications web et mobile qui utilisent des APIs

• Arrêter de penser Remote Procedure Call

Page 4: Restful, really ? MixIt 2014

–Phil Karlton

“There are only two hard things in Computer Science: cache invalidation and naming

things.”

Page 5: Restful, really ? MixIt 2014

Problèmes avec Rest• Cache (API et apps)

• Resources : changement de paradigme (API et apps)

• Same Origin Policy (apps)

• Authentification (API et apps)

• Pas de standard de sécurité évolué (API et apps)

• Si besoin de moins de 100ms de latence (essayer d’éviter en interne)

Page 6: Restful, really ? MixIt 2014

Cool stuff !• Versioning : Accept-content : application/

vnd.acme.user+json;v=1

• Status code HTTP

• Hypertext

• Identification par URI

• Négociation de contenu : Accept-* (Language et Type)

• etc.

Page 7: Restful, really ? MixIt 2014

Pure Rest :)

• Utiliser tous les verbes HTTP

• Stateless

• Paramètre(s) dans l’URI

• Cache

Page 8: Restful, really ? MixIt 2014

Practical Rest :(

• Utiliser seulement GET et POST

• Stateful

• Les paramètres dans la Query-String ou en POST

Page 9: Restful, really ? MixIt 2014

Hypermedia

• HATEOAS : hypermedia moteur de l’état de l’application

• Nœuds liés par des hyperliens

Page 10: Restful, really ? MixIt 2014

Hypermedia : ok

• Auto-documentation, auto-découverte de l’API

• Tolérance au changement

• Monté en charge toujours possible (scalable)

Page 11: Restful, really ? MixIt 2014

Hypermedia : nok

• Maintenir les liens et les relations

• Ajoute de la complexité côté serveur

• Pas "encore" de standard (simple, unique) pour JSON

Page 12: Restful, really ? MixIt 2014

Hypermedia et JSON

• JSON-LD : norme Linked Data pour JSON du W3C

• HAL : utilisé par Amazon AppStream

• Collection+JSON de Mike Amundsen

• Siren

Page 13: Restful, really ? MixIt 2014

Conseils• Pas de verbes dans l’URL

• Utiliser des noms au pluriel dans l’URL

• Supprimer la complexité dans la Query-String

• Pas de version dans l’url

• Pas de content type dans l’url

• Eviter le practical Rest

• POST n'est pas idempotent (unsafe) contrairement à PUT

• Les versbes HTTP != CRUD

• Penser ressources et pas méthodes ou actions

Page 14: Restful, really ? MixIt 2014

Richardson Maturity Model

• niveau 0 : RPC sur HTTP

• niveau 1 : ressources différenciées

• niveau 2 : verbes et codes retours HTTP

• niveau 3 : contrôles hypermedia

Page 15: Restful, really ? MixIt 2014

Xavier Carpentier Twitter: @xcapetir

[email protected]