SlideShare une entreprise Scribd logo
#Restful, really ?
Faire une architecture de type Rest, que cela implique-t-
il vraiment ?
Xavier Carpentier
Twitter: @xcapetir
contact@xavier-
carpentier.com
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
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
–Phil Karlton
“There are only two hard things in Computer
Science: cache invalidation and naming
things.”
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)
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.
Pure Rest :)
• Utiliser tous les verbes HTTP
• Stateless
• Paramètre(s) dans l’URI
• Cache
Practical Rest :(
• Utiliser seulement GET et POST
• Stateful
• Les paramètres dans la Query-String ou en POST
Hypermedia
• HATEOAS : hypermedia moteur de l’état de
l’application
• Nœuds liés par des hyperliens
Hypermedia : ok
• Auto-documentation, auto-découverte de l’API
• Tolérance au changement
• Monté en charge toujours possible (scalable)
Hypermedia : nok
• Maintenir les liens et les relations
• Ajoute de la complexité côté serveur
• Pas "encore" de standard (simple, unique) pour
JSON
Hypermedia et JSON
• JSON-LD : norme Linked Data pour JSON du W3C
• HAL : utilisé par Amazon AppStream
• Collection+JSON de Mike Amundsen
• Siren
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
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
Xavier Carpentier
Twitter: @xcapetir
contact@xavier-carpentier.com

Contenu connexe

En vedette

Iniciador Kids 2
Iniciador Kids 2Iniciador Kids 2
Formulario proyecto nov
Formulario proyecto novFormulario proyecto nov
Formulario proyecto nov
annsand.ana
 
De donde-eran-adan-y-eva
De donde-eran-adan-y-evaDe donde-eran-adan-y-eva
De donde-eran-adan-y-eva
fotelia
 
Ma Pilule En Continu
Ma Pilule En ContinuMa Pilule En Continu
Ma Pilule En Continu
guest1473dc
 
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Stephane Amarsy (Inbox)
 
Puka runa
Puka runaPuka runa
Puka runa
goya56
 
Rapport activite ministere budget 2010
Rapport activite ministere budget 2010Rapport activite ministere budget 2010
Rapport activite ministere budget 2010
Ministère de l'Économie et des Finances
 
Presentacion guia estudios proyectos
Presentacion guia estudios proyectosPresentacion guia estudios proyectos
Presentacion guia estudios proyectos
Guadalinfo Viznar
 
Escuela de comunicadores ciudadanos juveniles
Escuela de comunicadores ciudadanos juvenilesEscuela de comunicadores ciudadanos juveniles
Escuela de comunicadores ciudadanos juveniles
Espacio Público
 
PresentacióN Software Libre En La Escuela
PresentacióN Software Libre En La EscuelaPresentacióN Software Libre En La Escuela
PresentacióN Software Libre En La Escuela
Cristinacs
 
Deber Fabricio V
Deber Fabricio VDeber Fabricio V
Deber Fabricio V
guesta1e0b
 
Discusión no. 2 curso web impm táchira carlos gómez valderrama
Discusión no. 2 curso web impm táchira  carlos gómez valderramaDiscusión no. 2 curso web impm táchira  carlos gómez valderrama
Discusión no. 2 curso web impm táchira carlos gómez valderrama
Carlos Luis Gomez Valderrama
 
Mensuel actions juin 2010
Mensuel actions juin 2010Mensuel actions juin 2010
Mensuel actions juin 2010
Cherradi -
 
Eco immobilier
Eco immobilierEco immobilier
Eco immobilier
Cherradi -
 
Tendencias Digitales en Perú - Noviembre 2011
Tendencias Digitales en Perú - Noviembre 2011Tendencias Digitales en Perú - Noviembre 2011
Tendencias Digitales en Perú - Noviembre 2011
Neo Consulting
 
Universo 10 10
Universo 10 10Universo 10 10
Universo 10 10
Juan Krishna Vedani
 
Chiffre commerce exterieur 052011
Chiffre commerce exterieur 052011Chiffre commerce exterieur 052011
Chiffre commerce exterieur 052011
Ministère de l'Économie et des Finances
 
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_inseeASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
Ministère de l'Économie et des Finances
 

En vedette (20)

Iniciador Kids 2
Iniciador Kids 2Iniciador Kids 2
Iniciador Kids 2
 
Formulario proyecto nov
Formulario proyecto novFormulario proyecto nov
Formulario proyecto nov
 
De donde-eran-adan-y-eva
De donde-eran-adan-y-evaDe donde-eran-adan-y-eva
De donde-eran-adan-y-eva
 
Ma Pilule En Continu
Ma Pilule En ContinuMa Pilule En Continu
Ma Pilule En Continu
 
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
 
Puka runa
Puka runaPuka runa
Puka runa
 
Rapport activite ministere budget 2010
Rapport activite ministere budget 2010Rapport activite ministere budget 2010
Rapport activite ministere budget 2010
 
Presentacion guia estudios proyectos
Presentacion guia estudios proyectosPresentacion guia estudios proyectos
Presentacion guia estudios proyectos
 
Escuela de comunicadores ciudadanos juveniles
Escuela de comunicadores ciudadanos juvenilesEscuela de comunicadores ciudadanos juveniles
Escuela de comunicadores ciudadanos juveniles
 
Mon impress2
Mon impress2Mon impress2
Mon impress2
 
PresentacióN Software Libre En La Escuela
PresentacióN Software Libre En La EscuelaPresentacióN Software Libre En La Escuela
PresentacióN Software Libre En La Escuela
 
Deber Fabricio V
Deber Fabricio VDeber Fabricio V
Deber Fabricio V
 
Discusión no. 2 curso web impm táchira carlos gómez valderrama
Discusión no. 2 curso web impm táchira  carlos gómez valderramaDiscusión no. 2 curso web impm táchira  carlos gómez valderrama
Discusión no. 2 curso web impm táchira carlos gómez valderrama
 
061108165
061108165061108165
061108165
 
Mensuel actions juin 2010
Mensuel actions juin 2010Mensuel actions juin 2010
Mensuel actions juin 2010
 
Eco immobilier
Eco immobilierEco immobilier
Eco immobilier
 
Tendencias Digitales en Perú - Noviembre 2011
Tendencias Digitales en Perú - Noviembre 2011Tendencias Digitales en Perú - Noviembre 2011
Tendencias Digitales en Perú - Noviembre 2011
 
Universo 10 10
Universo 10 10Universo 10 10
Universo 10 10
 
Chiffre commerce exterieur 052011
Chiffre commerce exterieur 052011Chiffre commerce exterieur 052011
Chiffre commerce exterieur 052011
 
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_inseeASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
ASPECTS DE LA CRISE_economie et statistique 438-440-juin2011_insee
 

Similaire à Restful, really ? MixIt 2014

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
 
Comprendre, utiliser et créer une API
Comprendre, utiliser et créer une APIComprendre, utiliser et créer une API
Comprendre, utiliser et créer une API
Olivia Reaney
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
Jérémy Lecour
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
Khalid Jebbari
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
jollivetc
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SI
Djamel Zouaoui
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
Restlet
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
Jerome Louvel
 
À 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
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
Sabri Bouchlema
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
Fadel Chafai
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
Camille Roux
 
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
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
CIVEL Benoit
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
Sabri Bouchlema
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Camille Roux
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
Sabri Bouchlema
 
Meetup React Nantes - React Query.pdf
Meetup React Nantes - React Query.pdfMeetup React Nantes - React Query.pdf
Meetup React Nantes - React Query.pdf
OlivierThierry9
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
Ouadie LAHDIOUI
 

Similaire à Restful, really ? MixIt 2014 (20)

RESTful API - Retour d'expérience
RESTful API - Retour d'expérienceRESTful API - Retour d'expérience
RESTful API - Retour d'expérience
 
Comprendre, utiliser et créer une API
Comprendre, utiliser et créer une APIComprendre, utiliser et créer une API
Comprendre, utiliser et créer une API
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Soap
SoapSoap
Soap
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SI
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
 
À 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
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
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
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Meetup React Nantes - React Query.pdf
Meetup React Nantes - React Query.pdfMeetup React Nantes - React Query.pdf
Meetup React Nantes - React Query.pdf
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
 

Plus de Xavier Carpentier

#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014
Xavier Carpentier
 
Hibernate
HibernateHibernate
Maven
MavenMaven
Injection de dependance en Java
Injection de dependance en JavaInjection de dependance en Java
Injection de dependance en Java
Xavier Carpentier
 
Java Efficace
Java EfficaceJava Efficace
Java Efficace
Xavier Carpentier
 
Egoless
EgolessEgoless

Plus de Xavier Carpentier (6)

#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014#Restful really ? ElsassJUG 17 juin 2014
#Restful really ? ElsassJUG 17 juin 2014
 
Hibernate
HibernateHibernate
Hibernate
 
Maven
MavenMaven
Maven
 
Injection de dependance en Java
Injection de dependance en JavaInjection de dependance en Java
Injection de dependance en Java
 
Java Efficace
Java EfficaceJava Efficace
Java Efficace
 
Egoless
EgolessEgoless
Egoless
 

Restful, really ? MixIt 2014

  • 1. #Restful, really ? Faire une architecture de type Rest, que cela implique-t- il vraiment ? Xavier Carpentier Twitter: @xcapetir contact@xavier- carpentier.com
  • 2. 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
  • 3. 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
  • 4. –Phil Karlton “There are only two hard things in Computer Science: cache invalidation and naming things.”
  • 5. 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)
  • 6. 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.
  • 7. Pure Rest :) • Utiliser tous les verbes HTTP • Stateless • Paramètre(s) dans l’URI • Cache
  • 8. Practical Rest :( • Utiliser seulement GET et POST • Stateful • Les paramètres dans la Query-String ou en POST
  • 9. Hypermedia • HATEOAS : hypermedia moteur de l’état de l’application • Nœuds liés par des hyperliens
  • 10. Hypermedia : ok • Auto-documentation, auto-découverte de l’API • Tolérance au changement • Monté en charge toujours possible (scalable)
  • 11. Hypermedia : nok • Maintenir les liens et les relations • Ajoute de la complexité côté serveur • Pas "encore" de standard (simple, unique) pour JSON
  • 12. Hypermedia et JSON • JSON-LD : norme Linked Data pour JSON du W3C • HAL : utilisé par Amazon AppStream • Collection+JSON de Mike Amundsen • Siren
  • 13. 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
  • 14. 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