SlideShare uma empresa Scribd logo
1 de 28
REST How-to
      Presentation d'article
Damien Cavaillès - 14/12/12 - UQAC
Introduction
REST :
● Qui?
● Quand?
● Pourquoi?
REST met l'accent sur :
●   Extensibilité des interactions entre composants
●   Généralité des interfaces
●   Déploiement indépendant des composants
●   L'utilisation de composant intermédiaires pour résoudre les
    problèmes de performances, de sécurité ou encapsuler un
    système




               Pourquoi REST ? [Fielding]
Contribution
REST, comment?
Quelles exigences pour ne pas répéter les
erreurs de SOAP?
Quelles solutions? A quel coût?
REST arrive à ses fins par quatre contraintes:
●   Identification des ressources
●   Manipulation des ressources par des représentations
●   Messages auto-décrits
●   Hypermedia en tant que machine d'état




           REST en 4 contraintes [Paul Prescod]
Prendre un bon départ
Pour éviter les erreurs de SOAP, il faut
analyser les divergences au sein de REST
RESTafarian vs Pragmatiques : les bonnes questions
Les verbes HTTPs
HiREST : 4 verbes
LoREST : 2 verbes


         /users/124?method=delete
Supporter les 4 verbes
Supporter une alternative : paramètre GET
                "method"
Les Codes HTTPs
Il existe 71 codes HTTPs.
Certains clients ne supportent pas d'autres
codes que le 200 (Flash ...).
Utiliser les codes HTTPs
 Mais permettre de forcer le code 200
Négociation du format
Le format des messages est décrit avec les
Headers HTTPs:
● Accept-Type
● Content-Type
Problème : certains composants ne les
supportent pas.
C'est pénible pour tester dans un navigateur.
Pragmatiques :     /users/124.{format}
Negocier le format
  avec les headers
Autoriser le format dans l'extension
Découverte et Hypermedia
Il n'y a pas de description de service.
Le service doit être découvert.
Pour cela, on utilise Hypermedia (liens
Hypertextes).
Découverte et Hypermedia
Problème :
JSON et XML, ne sont pas Hypermedia.
Ils n'embarquent pas nativement de liens Href.
Solution répandue : publier une liste des routes
C'est un WSDL pour les humains, avec du HTML/CSS
Offrir une documentation
   orientée ressource
    Découvrable par un robot
     Lisible par un humain
Versions et dynamisme
Un service doit pouvoir évoluer dynamiquement
sans déprécier ses consommateurs.
Problème : Les clients ne découvrent pas le
service.
Solution : versionner le service
Versionner un service par
       ses routes
  https://entrypoint/version_number/...
XML
Message auto-décrits !
XML n'est pas un format.
Le XML (Extensible Markup Language, « langage
de balisage extensible ») est un langage
informatique de balisage générique qui dérive du
SGML. Cette syntaxe est dite extensible car elle
permet de définir différents espaces de noms,
c'est-à-dire des langages avec chacun leur
vocabulaire et leur grammaire, comme XHTML,
XSLT,RSS, SVG…




                   XML [Wikipedia]
Un message XML doit
préciser son Schema
   Au format XML Schema
Synthèse
●   Supporter les 4 verbes HTTPs
    ○   Mais proposer une alternative uniforme
●   Utiliser les codes HTTPs
    ○   Mais permettre de forcer le code 200
●   Negocier le type dans les headers HTTPs
    ○   Autoriser le type dans l'extension
●   Offir une documentation HTML orientée ressource
    ○   Lisible par un humain, découvrable par un robot
●   Versionner un service par ses routes
    ○   Pour ne jamais déprécier une route
●   XML doit préciser son schema
    ○   XML Schema est fait pour ça
L'Homogénéité d'abord !
Java                DotNet
● Play!             ● MVC4 Web API
● Jersey (JAX-RS)   ● WCF REST Template
● RestLet

Ruby                Python
● Ruby On Rails     ● Flask
● Sinatra           ● Bottle
PHP                 ● Web.py
● Symphony          ● MimeRender
Expérimentation
● Evaluer le bootstrapping
● Evaluer l'experience developpeur
● Mesurer les performances
Nom du Framework             Rails               Play!             RestLet

Négociation du Format        5/5                 4/1                 5/3
(Header/.{format})

HiRest / LowRest             5/5                 5/3                 5/2

Respect du Stateless          5                   5                   5

Format JSON / XML            5/5                 3/4                 5/4

CLOC (vide / une          391 / 498       40 / 432 (hors XML)      56 / 183
ressource)

Temps développement       15 minutes            20 min            20 minutes
pour une ressource

Courbe d'apprentissage   Exponentielle      Logarithmique          Echelon


Support IDE /                4/4                 3/2                 4/4
Experience


                    Caractéristiques de quelques frameworks
  Légende : 5 = natif dans le framework - 0 = presque impossible à implémenter
Concurrence   Rails           Play!      Restlet (GAE)
                              (Heroku/Thin)   (Heroku)

Requêtes Par    100           85.95           230.25     144.84 (3-2)
Seconde
moyen (#/s)     1000                          197.62     220.33 (3-2)

Temps Par       100           11.634          4.343      6.904 (5-3)
Requête moyen
(ms)            1000                          5.060      4.539 (5-3)




                   Performances : Apache Benchmark
Références
1. "Architectural Styles and the Design of Network-based Software
   Architectures", Thèse, Roy Thomas Fielding, 2000, http://www.ics.uci.
   edu/~fielding/pubs/dissertation/rest_arch_style.htm
2. “Roots of the SOAP/REST Debate”, Paul Prescod, 2002
3. “How Restful is your API”, Cori House, 2012 http://www.bitnative.
   com/2012/08/26/how-restful-is-your-api/
4. "Richardson Maturity Model, steps toward the glory of REST", Martin
   Fowler, 2010
5. "Distributed Systems, Concepts And Design", 5th edition, Coulouris et al,
   2012

Mais conteúdo relacionado

Semelhante a Presentation article rest : How-to

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
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 
Presentation
PresentationPresentation
Presentationbois
 
03 Web Semantique
03  Web Semantique03  Web Semantique
03 Web Semantiquebadirh
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
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
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABESABES
 
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
Annexe1   éTude Comparative Sur Les Moteurs De RechercheAnnexe1   éTude Comparative Sur Les Moteurs De Recherche
Annexe1 éTude Comparative Sur Les Moteurs De RechercheMohamed Ben Bouzid
 
BordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaBordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaCamblor Frédéric
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebMicrosoft
 
Dotnet j2 ee
Dotnet j2 eeDotnet j2 ee
Dotnet j2 eechdalel
 

Semelhante a Presentation article rest : How-to (20)

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
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Presentation
PresentationPresentation
Presentation
 
03 Web Semantique
03  Web Semantique03  Web Semantique
03 Web Semantique
 
Soap
SoapSoap
Soap
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
Annexe1   éTude Comparative Sur Les Moteurs De RechercheAnnexe1   éTude Comparative Sur Les Moteurs De Recherche
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
 
BordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets JavaBordeauxJUG : Portails & Portlets Java
BordeauxJUG : Portails & Portlets Java
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
HTML5 & SilverLight 5
HTML5 & SilverLight 5HTML5 & SilverLight 5
HTML5 & SilverLight 5
 
Presentation forum php 2010
Presentation forum php 2010Presentation forum php 2010
Presentation forum php 2010
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
 
Dotnet j2 ee
Dotnet j2 eeDotnet j2 ee
Dotnet j2 ee
 

Mais de Damien Cavaillès

Deploying Machine Learning in production without servers - #serverlessCPH
Deploying Machine Learning in production without servers - #serverlessCPHDeploying Machine Learning in production without servers - #serverlessCPH
Deploying Machine Learning in production without servers - #serverlessCPHDamien Cavaillès
 
Mix-IT - Dev2Maker - Damien Cavaillès
Mix-IT - Dev2Maker - Damien CavaillèsMix-IT - Dev2Maker - Damien Cavaillès
Mix-IT - Dev2Maker - Damien CavaillèsDamien Cavaillès
 
BBL AXA Lille - Nearable and the Eddystone Quest
BBL AXA Lille - Nearable and the Eddystone QuestBBL AXA Lille - Nearable and the Eddystone Quest
BBL AXA Lille - Nearable and the Eddystone QuestDamien Cavaillès
 
Android Auto Talk at #DroidConFR !
Android Auto Talk at #DroidConFR !Android Auto Talk at #DroidConFR !
Android Auto Talk at #DroidConFR !Damien Cavaillès
 
Andoid Auto : Rolling Droid Gather no moss
Andoid Auto : Rolling Droid Gather no mossAndoid Auto : Rolling Droid Gather no moss
Andoid Auto : Rolling Droid Gather no mossDamien Cavaillès
 
Dev2Maker at Codeurs en Seine #Codeurs2014
Dev2Maker at Codeurs en Seine #Codeurs2014Dev2Maker at Codeurs en Seine #Codeurs2014
Dev2Maker at Codeurs en Seine #Codeurs2014Damien Cavaillès
 
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalk
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalkAndroid Wear - Ceci n'est pas une montre ! - #TakeOffTalk
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalkDamien Cavaillès
 

Mais de Damien Cavaillès (7)

Deploying Machine Learning in production without servers - #serverlessCPH
Deploying Machine Learning in production without servers - #serverlessCPHDeploying Machine Learning in production without servers - #serverlessCPH
Deploying Machine Learning in production without servers - #serverlessCPH
 
Mix-IT - Dev2Maker - Damien Cavaillès
Mix-IT - Dev2Maker - Damien CavaillèsMix-IT - Dev2Maker - Damien Cavaillès
Mix-IT - Dev2Maker - Damien Cavaillès
 
BBL AXA Lille - Nearable and the Eddystone Quest
BBL AXA Lille - Nearable and the Eddystone QuestBBL AXA Lille - Nearable and the Eddystone Quest
BBL AXA Lille - Nearable and the Eddystone Quest
 
Android Auto Talk at #DroidConFR !
Android Auto Talk at #DroidConFR !Android Auto Talk at #DroidConFR !
Android Auto Talk at #DroidConFR !
 
Andoid Auto : Rolling Droid Gather no moss
Andoid Auto : Rolling Droid Gather no mossAndoid Auto : Rolling Droid Gather no moss
Andoid Auto : Rolling Droid Gather no moss
 
Dev2Maker at Codeurs en Seine #Codeurs2014
Dev2Maker at Codeurs en Seine #Codeurs2014Dev2Maker at Codeurs en Seine #Codeurs2014
Dev2Maker at Codeurs en Seine #Codeurs2014
 
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalk
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalkAndroid Wear - Ceci n'est pas une montre ! - #TakeOffTalk
Android Wear - Ceci n'est pas une montre ! - #TakeOffTalk
 

Presentation article rest : How-to

  • 1. REST How-to Presentation d'article Damien Cavaillès - 14/12/12 - UQAC
  • 2. Introduction REST : ● Qui? ● Quand? ● Pourquoi?
  • 3. REST met l'accent sur : ● Extensibilité des interactions entre composants ● Généralité des interfaces ● Déploiement indépendant des composants ● L'utilisation de composant intermédiaires pour résoudre les problèmes de performances, de sécurité ou encapsuler un système Pourquoi REST ? [Fielding]
  • 4. Contribution REST, comment? Quelles exigences pour ne pas répéter les erreurs de SOAP? Quelles solutions? A quel coût?
  • 5. REST arrive à ses fins par quatre contraintes: ● Identification des ressources ● Manipulation des ressources par des représentations ● Messages auto-décrits ● Hypermedia en tant que machine d'état REST en 4 contraintes [Paul Prescod]
  • 6. Prendre un bon départ Pour éviter les erreurs de SOAP, il faut analyser les divergences au sein de REST
  • 7. RESTafarian vs Pragmatiques : les bonnes questions
  • 8. Les verbes HTTPs HiREST : 4 verbes LoREST : 2 verbes /users/124?method=delete
  • 9. Supporter les 4 verbes Supporter une alternative : paramètre GET "method"
  • 10. Les Codes HTTPs Il existe 71 codes HTTPs. Certains clients ne supportent pas d'autres codes que le 200 (Flash ...).
  • 11. Utiliser les codes HTTPs Mais permettre de forcer le code 200
  • 12. Négociation du format Le format des messages est décrit avec les Headers HTTPs: ● Accept-Type ● Content-Type Problème : certains composants ne les supportent pas. C'est pénible pour tester dans un navigateur. Pragmatiques : /users/124.{format}
  • 13. Negocier le format avec les headers Autoriser le format dans l'extension
  • 14. Découverte et Hypermedia Il n'y a pas de description de service. Le service doit être découvert. Pour cela, on utilise Hypermedia (liens Hypertextes).
  • 15. Découverte et Hypermedia Problème : JSON et XML, ne sont pas Hypermedia. Ils n'embarquent pas nativement de liens Href.
  • 16. Solution répandue : publier une liste des routes C'est un WSDL pour les humains, avec du HTML/CSS
  • 17. Offrir une documentation orientée ressource Découvrable par un robot Lisible par un humain
  • 18. Versions et dynamisme Un service doit pouvoir évoluer dynamiquement sans déprécier ses consommateurs. Problème : Les clients ne découvrent pas le service. Solution : versionner le service
  • 19. Versionner un service par ses routes https://entrypoint/version_number/...
  • 20. XML Message auto-décrits ! XML n'est pas un format.
  • 21. Le XML (Extensible Markup Language, « langage de balisage extensible ») est un langage informatique de balisage générique qui dérive du SGML. Cette syntaxe est dite extensible car elle permet de définir différents espaces de noms, c'est-à-dire des langages avec chacun leur vocabulaire et leur grammaire, comme XHTML, XSLT,RSS, SVG… XML [Wikipedia]
  • 22. Un message XML doit préciser son Schema Au format XML Schema
  • 23. Synthèse ● Supporter les 4 verbes HTTPs ○ Mais proposer une alternative uniforme ● Utiliser les codes HTTPs ○ Mais permettre de forcer le code 200 ● Negocier le type dans les headers HTTPs ○ Autoriser le type dans l'extension ● Offir une documentation HTML orientée ressource ○ Lisible par un humain, découvrable par un robot ● Versionner un service par ses routes ○ Pour ne jamais déprécier une route ● XML doit préciser son schema ○ XML Schema est fait pour ça
  • 24. L'Homogénéité d'abord ! Java DotNet ● Play! ● MVC4 Web API ● Jersey (JAX-RS) ● WCF REST Template ● RestLet Ruby Python ● Ruby On Rails ● Flask ● Sinatra ● Bottle PHP ● Web.py ● Symphony ● MimeRender
  • 25. Expérimentation ● Evaluer le bootstrapping ● Evaluer l'experience developpeur ● Mesurer les performances
  • 26. Nom du Framework Rails Play! RestLet Négociation du Format 5/5 4/1 5/3 (Header/.{format}) HiRest / LowRest 5/5 5/3 5/2 Respect du Stateless 5 5 5 Format JSON / XML 5/5 3/4 5/4 CLOC (vide / une 391 / 498 40 / 432 (hors XML) 56 / 183 ressource) Temps développement 15 minutes 20 min 20 minutes pour une ressource Courbe d'apprentissage Exponentielle Logarithmique Echelon Support IDE / 4/4 3/2 4/4 Experience Caractéristiques de quelques frameworks Légende : 5 = natif dans le framework - 0 = presque impossible à implémenter
  • 27. Concurrence Rails Play! Restlet (GAE) (Heroku/Thin) (Heroku) Requêtes Par 100 85.95 230.25 144.84 (3-2) Seconde moyen (#/s) 1000 197.62 220.33 (3-2) Temps Par 100 11.634 4.343 6.904 (5-3) Requête moyen (ms) 1000 5.060 4.539 (5-3) Performances : Apache Benchmark
  • 28. Références 1. "Architectural Styles and the Design of Network-based Software Architectures", Thèse, Roy Thomas Fielding, 2000, http://www.ics.uci. edu/~fielding/pubs/dissertation/rest_arch_style.htm 2. “Roots of the SOAP/REST Debate”, Paul Prescod, 2002 3. “How Restful is your API”, Cori House, 2012 http://www.bitnative. com/2012/08/26/how-restful-is-your-api/ 4. "Richardson Maturity Model, steps toward the glory of REST", Martin Fowler, 2010 5. "Distributed Systems, Concepts And Design", 5th edition, Coulouris et al, 2012