SlideShare uma empresa Scribd logo
1 de 36
Luc Trudeau
Cette œuvre est mise à disposition selon les termes de la
Licence Creative Commons Attribution - Pas d'Utilisation
Commerciale - Pas de Modification 4.0 International.
HTTP et REST
L Trudeau
Attributs de qualité
2
HTTP et REST
Quels attributs de qualité doivent être
prédominants pour justifier une conception
orientée services?
 Interopérabilité
 Extensibilité
L Trudeau
3
HTTP et REST
RESTful HTTP SOAP
Ref: http://caharvey.deviantart.com/art/Death-Battle-Legolas-vs-Hawkeye-403741898
L Trudeau
4
HTTP et REST
Ref: http://www.comicvine.com/forums/battles-7/legolas-vs-hawkeye-movie-versions-752101/
RESTful HTTP
Extensibilité
Attribut de qualité principale
http://images1.wikia.nocookie.net/__cb20111011203834/marvelmovies/images/f/f0/Hawkeye_avengers_movie.JPG
SOAP
Interopérabilité
Attribut de qualité principale
L Trudeau
5
HTTP et REST
Lequel est le meilleur?
Ça dépend! On pourrait dire :
SOAP : Si vous êtes à l’intérieur d’une compagnie
et votre attribut de qualité principale est
l’interopérabilité.
RESTful HTTP: Si vous êtes sur le web et votre
attribut de qualité principale est l’extensibilité
Facile! Web == !SOAP ?
Non! Par exemple, Bing Search offre un service
SOAP.
L Trudeau
REST Vs. RESTful HTTP
6
HTTP et REST
L Trudeau
Style Architectural?
7
HTTP et REST
Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
L Trudeau
Qu’est-ce qu’un style architectural
8
HTTP et REST
• Une description abstraite
• La conception dépend
implicitement du style
architectural
• Limite les possibilités sur les
stratégies de conception
(contraintes)
• Fournit un cadre et un
vocabulaire pour les
éléments d’une conception
de haut niveau
Architecture
Gothique
Documenting Software Architecture 2e édition Software Design, Budgen 2e édition
LOG430/MGL802/MGL844
Ref : http://www.vam.ac.uk/content/articles/g/gothic-architecture/
L Trudeau
Qu’est-ce que REST?
9
HTTP et REST
REST est une description abstraite
La conception de vos services web dépend
implicitement de REST
REST limite les possibilités sur les stratégies
de conception (contraintes)
REST fournit un cadre et un vocabulaire pour
les éléments d’une conception de haut
niveau
Attention! REST n’est pas une technologie, mais bien un style
architectural. Plusieurs mélangent REST et RESTful HTTP.
L Trudeau
Style vs. Patron?
10
HTTP et REST
Un style est moins rigide et plus général qu’un
patron
 Le patron est plus rigide, car il vise à résoudre un
problème en fonction d’un contexte
 Le style est moins rigide, car il s’agit d’une approche ou
une façon de faire.
Le patron observateur
Photo Ref: http://en.wikipedia.org/wiki/Observer_pattern Photo Ref: http://msdn.microsoft.com/en-us/library/bb972931.aspx
Le style en couches
L Trudeau
Principes fondamentaux REST
11
HTTP et REST
• Sure (Safe)
• Idempotence
• Sans état
• Antémémorable (Cacheable)
L Trudeau
Une méthode sure
12
HTTP et REST
Une méthode sure :
 N’effectue aucune action significative autre
que l’obtention d’information
 Ne génère pas d’effets collatéraux
Ref: RFC2616 http://www.ietf.org/rfc/rfc2616.txt
Exemple: Une requête pour effacer une ressource n’est
pas sure. http://www.monservice.com/delete?=1234
Imaginez un “crawler” qui trouve ce lien…
L Trudeau
Idempotence
13
HTTP et REST
Les effets collatéraux de N > 0 demandes sont
les mêmes que pour une seule demande
Ref:http://www.youtube.com/watch?v=6dVNdFwqeKs&feature=c4-overview&list=UUzaZL1VLtdVTiZ8k07z65jg
L Trudeau
Antémémorable (Cacheable)
14
HTTP et REST
Une réponse est antémémorable si elle peut
être conservée à l’intérieure d’une antémémoire
2 + 2 = 4 (toujours, même quand il pleut)
La réponse à cette requête est antémémorable
Une requête pour la température n’est pas antémémorable
Cependant, je peux la conserver dans un cache pour une courte
période de temps (Eventual Consistency).
Pour plus d’info : http://en.wikipedia.org/wiki/Eventual_consistency
L Trudeau
HTTP est une instance de REST
15
HTTP et REST
En Java, on pourrait exprimer cette relation de
la façon suivante:
REST http = new HTTP();
L Trudeau
Comment HTTP est-il une instance de REST?
16
HTTP et REST
REST impose 5 contraintes
 Architecture Client Serveur
 Architecture en couche
 Serveur sans-état
 Identification des éléments Antémémorable (Cacheable)
 Interface uniforme
• Requêtes par ressource
• Manipulation par ressource
• Messages autodescriptifs
• Hypermédia pour représenter l’état (HATEOAS)
En fait il y en a 6, mais le code sur demande est optionnel. Alors,
concentrons-nous sur l’essentiel.
L Trudeau
RESTful HTTP
17
HTTP et REST
Est-ce que HTTP est client-serveur?
L Trudeau
RESTful HTTP
18
HTTP et REST
Est-ce que HTTP est en couche?
À quel niveau se trouve-t-il?
Pourquoi n’est-il pas au niveau 5?
Qu’est-ce que ça implique d’être au niveau 7?
Ref: http://www.cubrid.org/files/attach/images/220547/186/504/http_vs_spdy.png
L Trudeau
RESTful HTTP
19
HTTP et REST
Est-ce possible d’identifier les éléments
antémémorable?
Oui! Comment?
 Pragma: no-cache HTTP
 Expires: Fri, 30 Oct 1998 14:19:41 GMT
 Cache-Control: max-age=3600, must-revalidate
Ref: http://www.mnot.net/cache_docs/
L Trudeau
Un Outil pour vous aider
20
HTTP et REST
http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
L Trudeau
RESTful HTTP
21
HTTP et REST
Est-ce que HTTP possède une interface
uniforme?
GET : sure, idempotent, antémémorable
PUT : idempotent
DELETE : idempotent
HEAD : sure, idempotent
POST
Danger!
Théorie
vs.
Pratique
L Trudeau
RESTful HTTP
22
HTTP et REST
Est-ce que HTTP est sans état? Oui!
Mais ma session Gmail? Elle est avec état et utilise HTTP.
L’état n’est pas fourni par le protocole HTTP, et le protocole
n’est pas conçu en fonction de cette session, c’est le
serveur qui gère cet état
Alors, je peux faire ce que je veux sur le serveur?
Oui, mais ça ne sera pas « RESTful ». Quand qu’on dit
qu’on dit qu’un « RESTful HTTP Service » ceci implique que
le service respect les contraintes REST et par le fait même
celles de HTTP
L Trudeau
RESTful HTTP
23
HTTP et REST
Alors Gmail n’est pas REST? Mais je pensais que Google
utilisait REST?
En ce qui concerne Gmail, je ne peux pas répondre, mais
REST ne veut pas dire sans-état, mais bien serveur sans-
état. Il peut y avoir des états sur le client. Une autre
approche est d’inclure l’état à la requête.
Oui, mais je gaspille de la bande passante!
C’est un compromis entre la bande passante, les ressources
sur le serveur et l’usage d’antémémoire. Cependant, ce
choix s’aligne avec les attributs de qualités de REST.
L Trudeau
RESTful HTTP
24
HTTP et REST
L Trudeau
Recette REST de Lucardo
25
HTTP et REST
Voici une recette facile pour transformer vos services
en services REST
• Identifiez les ressources et concevez vos URI
• Choisissez vos formats
• Identifiez les méthodes et leur sémantique
• Choisissez vos codes de réponses
L Trudeau
Pensez en terme de noms
26
HTTP et REST
En REST on ne pense pas en terme
d’opérations ou d’action
En REST on pense en terme de noms et
d’identifiants
L Trudeau
C’est Mal!
27
HTTP et REST
http://api.example.com/listChiens
http://api.example.com/getChien?id=1234…
http://api.example.com/newChien?id=1234…
http://api.example.com/setChien?id=1234…
http://api.example.com/listChienRouge
…
L Trudeau
L’approche REST
28
HTTP et REST
http://api.example.com/chiens
L Trudeau
L’interface uniforme
29
HTTP et REST
Ressource POST GET PUT DELETE
/chiens Créer un
nouveau
chien
Liste de tous
les chiens
Remplacer
les chiens
par d’autres
chiens
Effacer tous
les chiens
/chiens/123
4
Ajouter un
chien au
chien 1234
erreur
Afficher
chien 1234
S’il existe,
modifier le
chien
Sinon, créer
le chien
erreur
Effacer le
chien
L Trudeau
Singulier ou pluriel?
30
HTTP et REST
PLURIEL
http://api.example.com/chiens
http://api.example.com/chiens/1234
NE FAITES PAS!
http://api.example.com/chiens
http://api.example.com/chien/1234
L Trudeau
Impact sur votre conception
31
HTTP et REST
Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
L Trudeau
Associations
32
HTTP et REST
Tous les chiens de Bob
(GET) http://api.example.com/bob/chiens
Ajouter un chien à bob
(POST) http://api.example.com/bob/chiens
L Trudeau
REST Pure vs REST Pragmatique
33
HTTP et REST
Ref: https://xkcd.com/386/
XKCD Duty Calls
L Trudeau
Classification des APIs HTTP
34
HTTP et REST
WS-* Web Services (SOAP)
RPC URI-Tunneling (flickr 'REST' API)
API exposé par ressources, mais les actions
proviennent de paramètres dans l’URI
HTTP-based (Twitter, Google Calendar)
API exposé par ressources, Méthodes HTTP utilisées,
utilisation de types génériques
REST (Open Search)
Réf: http://nordsc.com/ext/classification_of_http_based_apis.html#uri-rpc
Ref: http://martinfowler.com/articles/richardsonMaturityModel.html
L Trudeau
Les versions
35
HTTP et REST
Comment spécifier la version d’un API REST?
Conseil :
 Insérer la version dans l’URL
 Les plus à gauche possible
Par exemple :
http://api.example.com/v1/chiens
L Trudeau
Comment spécifier le Format ?
36
HTTP et REST
Une approche REST pure utilise l’entête Accept:
Accept: application/json
Plusieurs approches utilisent un paramètre
?type=json
Conseil: ajouter le format à l’URL pour simuler une
extension
http://api.example.com/v1/chiens.json
http://api.example.com/v1/chiens.xml

Mais conteúdo relacionado

Mais procurados

Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web servicesmohammed addoumi
 
Les web services
Les web servicesLes web services
Les web servicesdihiaselma
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web servicesoussemos
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiEl Habib NFAOUI
 
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
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_servicesCamus LANMADOUCELO
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-toDamien Cavaillès
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web Nazih Heni
 
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretSylvain Maret
 
Chap1 p1-introduction
Chap1 p1-introductionChap1 p1-introduction
Chap1 p1-introductionMoez Re
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 

Mais procurados (20)

Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web services
 
Presentation SOAP
 Presentation SOAP Presentation SOAP
Presentation SOAP
 
Les web services
Les web servicesLes web services
Les web services
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
 
Soap
SoapSoap
Soap
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaoui
 
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
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-to
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web
 
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
 
Chap1 p1-introduction
Chap1 p1-introductionChap1 p1-introduction
Chap1 p1-introduction
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 

Destaque

Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Anthony Faucogney
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement AndroidAnthony Faucogney
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Rapport_ZERHOUNI_OSMOSEIII
Rapport_ZERHOUNI_OSMOSEIIIRapport_ZERHOUNI_OSMOSEIII
Rapport_ZERHOUNI_OSMOSEIIItaoufik Zerhouni
 
Le Développement d’une Application Web
Le Développement d’une Application WebLe Développement d’une Application Web
Le Développement d’une Application WebMalick Mbaye
 
TYPES OF HOUSING AND RESIDINTIAL BLOCKS
TYPES OF HOUSING AND RESIDINTIAL BLOCKSTYPES OF HOUSING AND RESIDINTIAL BLOCKS
TYPES OF HOUSING AND RESIDINTIAL BLOCKSSipAn Hayran
 
Plateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesPlateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesMajdi SAIBI
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaNazih Heni
 
Building construction
Building constructionBuilding construction
Building constructionLlyod cassidy
 
Types of building
Types of buildingTypes of building
Types of building2461998
 
Projet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiqueProjet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiquejihene Ab
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Building Construction
Building ConstructionBuilding Construction
Building ConstructionWilden How
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Structural systems in high rise buildings
Structural systems in high rise buildingsStructural systems in high rise buildings
Structural systems in high rise buildingsKarthik Suresh
 

Destaque (17)

Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Rapport_ZERHOUNI_OSMOSEIII
Rapport_ZERHOUNI_OSMOSEIIIRapport_ZERHOUNI_OSMOSEIII
Rapport_ZERHOUNI_OSMOSEIII
 
Le Développement d’une Application Web
Le Développement d’une Application WebLe Développement d’une Application Web
Le Développement d’une Application Web
 
TYPES OF HOUSING AND RESIDINTIAL BLOCKS
TYPES OF HOUSING AND RESIDINTIAL BLOCKSTYPES OF HOUSING AND RESIDINTIAL BLOCKS
TYPES OF HOUSING AND RESIDINTIAL BLOCKS
 
Plateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesPlateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'études
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Building construction
Building constructionBuilding construction
Building construction
 
Types of building
Types of buildingTypes of building
Types of building
 
Rapport de stage du fin d'étude
Rapport de stage du fin d'étudeRapport de stage du fin d'étude
Rapport de stage du fin d'étude
 
Projet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatiqueProjet de fin d'etude gestion informatique
Projet de fin d'etude gestion informatique
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Building Construction
Building ConstructionBuilding Construction
Building Construction
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Structural systems in high rise buildings
Structural systems in high rise buildingsStructural systems in high rise buildings
Structural systems in high rise buildings
 

Semelhante a HTTP et REST

Environnement et technologies web
Environnement et technologies webEnvironnement et technologies web
Environnement et technologies webIrinaTsimpilova1
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020SEO CAMP
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOWeLoveSEO
 
Referencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerceReferencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerceMohammed ALAMI ✅
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022SpikeeLabs
 
Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Vlad Posea
 
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
 
Drupal 8-decouverte-modules-du-coeur
Drupal 8-decouverte-modules-du-coeurDrupal 8-decouverte-modules-du-coeur
Drupal 8-decouverte-modules-du-coeurChipway
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le WebSaïd Radhouani
 
Utilisation avancée d'un crawler - SEO Camp'us 2015
Utilisation avancée d'un crawler - SEO Camp'us 2015Utilisation avancée d'un crawler - SEO Camp'us 2015
Utilisation avancée d'un crawler - SEO Camp'us 2015Philippe YONNET
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressourceAntoine Pouch
 
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
 
Les bases pour utiliser SPARQL
Les bases pour utiliser SPARQLLes bases pour utiliser SPARQL
Les bases pour utiliser SPARQLBorderCloud
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 

Semelhante a HTTP et REST (20)

Environnement et technologies web
Environnement et technologies webEnvironnement et technologies web
Environnement et technologies web
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEOCore Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
Core Web Vitals, les indicateurs de vitesse qui réconcilient UX et SEO
 
Referencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerceReferencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerce
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
Association 2 0
Association 2 0Association 2 0
Association 2 0
 
Association 2 0
Association 2 0Association 2 0
Association 2 0
 
Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1Introduction dans la Programmation Web Course 1
Introduction dans la Programmation Web Course 1
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
spring.pdf
spring.pdfspring.pdf
spring.pdf
 
Drupal 8-decouverte-modules-du-coeur
Drupal 8-decouverte-modules-du-coeurDrupal 8-decouverte-modules-du-coeur
Drupal 8-decouverte-modules-du-coeur
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le Web
 
Utilisation avancée d'un crawler - SEO Camp'us 2015
Utilisation avancée d'un crawler - SEO Camp'us 2015Utilisation avancée d'un crawler - SEO Camp'us 2015
Utilisation avancée d'un crawler - SEO Camp'us 2015
 
PHP et PHP Framework
PHP et PHP FrameworkPHP et PHP Framework
PHP et PHP Framework
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressource
 
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)
 
Les bases pour utiliser SPARQL
Les bases pour utiliser SPARQLLes bases pour utiliser SPARQL
Les bases pour utiliser SPARQL
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 

Mais de Luc Trudeau

Revue de l'année 2019 dans le monde des codecs videos
Revue de l'année 2019 dans le monde des codecs videosRevue de l'année 2019 dans le monde des codecs videos
Revue de l'année 2019 dans le monde des codecs videosLuc Trudeau
 
I don’t care if you have 360 Intra directional predictors
I don’t care if you have 360 Intra directional predictorsI don’t care if you have 360 Intra directional predictors
I don’t care if you have 360 Intra directional predictorsLuc Trudeau
 
Les technologies actuelles et futures de l'ott
Les technologies actuelles et futures de l'ottLes technologies actuelles et futures de l'ott
Les technologies actuelles et futures de l'ottLuc Trudeau
 
Chroma from Luma Intra Prediction for AV1
Chroma from Luma Intra Prediction for AV1Chroma from Luma Intra Prediction for AV1
Chroma from Luma Intra Prediction for AV1Luc Trudeau
 
Chroma From Luma Status Update
Chroma From Luma Status UpdateChroma From Luma Status Update
Chroma From Luma Status UpdateLuc Trudeau
 
ML2 et le Codetributhon
ML2 et le CodetributhonML2 et le Codetributhon
ML2 et le CodetributhonLuc Trudeau
 
HTTP Long Polling is awesome
HTTP Long Polling is awesomeHTTP Long Polling is awesome
HTTP Long Polling is awesomeLuc Trudeau
 
UML Class Diagrams are Awesome
UML Class Diagrams are AwesomeUML Class Diagrams are Awesome
UML Class Diagrams are AwesomeLuc Trudeau
 
Inverting Dependencies
Inverting DependenciesInverting Dependencies
Inverting DependenciesLuc Trudeau
 
Orchestre de services
Orchestre de servicesOrchestre de services
Orchestre de servicesLuc Trudeau
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs DesignLuc Trudeau
 

Mais de Luc Trudeau (11)

Revue de l'année 2019 dans le monde des codecs videos
Revue de l'année 2019 dans le monde des codecs videosRevue de l'année 2019 dans le monde des codecs videos
Revue de l'année 2019 dans le monde des codecs videos
 
I don’t care if you have 360 Intra directional predictors
I don’t care if you have 360 Intra directional predictorsI don’t care if you have 360 Intra directional predictors
I don’t care if you have 360 Intra directional predictors
 
Les technologies actuelles et futures de l'ott
Les technologies actuelles et futures de l'ottLes technologies actuelles et futures de l'ott
Les technologies actuelles et futures de l'ott
 
Chroma from Luma Intra Prediction for AV1
Chroma from Luma Intra Prediction for AV1Chroma from Luma Intra Prediction for AV1
Chroma from Luma Intra Prediction for AV1
 
Chroma From Luma Status Update
Chroma From Luma Status UpdateChroma From Luma Status Update
Chroma From Luma Status Update
 
ML2 et le Codetributhon
ML2 et le CodetributhonML2 et le Codetributhon
ML2 et le Codetributhon
 
HTTP Long Polling is awesome
HTTP Long Polling is awesomeHTTP Long Polling is awesome
HTTP Long Polling is awesome
 
UML Class Diagrams are Awesome
UML Class Diagrams are AwesomeUML Class Diagrams are Awesome
UML Class Diagrams are Awesome
 
Inverting Dependencies
Inverting DependenciesInverting Dependencies
Inverting Dependencies
 
Orchestre de services
Orchestre de servicesOrchestre de services
Orchestre de services
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
 

HTTP et REST

  • 1. Luc Trudeau Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International. HTTP et REST
  • 2. L Trudeau Attributs de qualité 2 HTTP et REST Quels attributs de qualité doivent être prédominants pour justifier une conception orientée services?  Interopérabilité  Extensibilité
  • 3. L Trudeau 3 HTTP et REST RESTful HTTP SOAP Ref: http://caharvey.deviantart.com/art/Death-Battle-Legolas-vs-Hawkeye-403741898
  • 4. L Trudeau 4 HTTP et REST Ref: http://www.comicvine.com/forums/battles-7/legolas-vs-hawkeye-movie-versions-752101/ RESTful HTTP Extensibilité Attribut de qualité principale http://images1.wikia.nocookie.net/__cb20111011203834/marvelmovies/images/f/f0/Hawkeye_avengers_movie.JPG SOAP Interopérabilité Attribut de qualité principale
  • 5. L Trudeau 5 HTTP et REST Lequel est le meilleur? Ça dépend! On pourrait dire : SOAP : Si vous êtes à l’intérieur d’une compagnie et votre attribut de qualité principale est l’interopérabilité. RESTful HTTP: Si vous êtes sur le web et votre attribut de qualité principale est l’extensibilité Facile! Web == !SOAP ? Non! Par exemple, Bing Search offre un service SOAP.
  • 6. L Trudeau REST Vs. RESTful HTTP 6 HTTP et REST
  • 7. L Trudeau Style Architectural? 7 HTTP et REST Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
  • 8. L Trudeau Qu’est-ce qu’un style architectural 8 HTTP et REST • Une description abstraite • La conception dépend implicitement du style architectural • Limite les possibilités sur les stratégies de conception (contraintes) • Fournit un cadre et un vocabulaire pour les éléments d’une conception de haut niveau Architecture Gothique Documenting Software Architecture 2e édition Software Design, Budgen 2e édition LOG430/MGL802/MGL844 Ref : http://www.vam.ac.uk/content/articles/g/gothic-architecture/
  • 9. L Trudeau Qu’est-ce que REST? 9 HTTP et REST REST est une description abstraite La conception de vos services web dépend implicitement de REST REST limite les possibilités sur les stratégies de conception (contraintes) REST fournit un cadre et un vocabulaire pour les éléments d’une conception de haut niveau Attention! REST n’est pas une technologie, mais bien un style architectural. Plusieurs mélangent REST et RESTful HTTP.
  • 10. L Trudeau Style vs. Patron? 10 HTTP et REST Un style est moins rigide et plus général qu’un patron  Le patron est plus rigide, car il vise à résoudre un problème en fonction d’un contexte  Le style est moins rigide, car il s’agit d’une approche ou une façon de faire. Le patron observateur Photo Ref: http://en.wikipedia.org/wiki/Observer_pattern Photo Ref: http://msdn.microsoft.com/en-us/library/bb972931.aspx Le style en couches
  • 11. L Trudeau Principes fondamentaux REST 11 HTTP et REST • Sure (Safe) • Idempotence • Sans état • Antémémorable (Cacheable)
  • 12. L Trudeau Une méthode sure 12 HTTP et REST Une méthode sure :  N’effectue aucune action significative autre que l’obtention d’information  Ne génère pas d’effets collatéraux Ref: RFC2616 http://www.ietf.org/rfc/rfc2616.txt Exemple: Une requête pour effacer une ressource n’est pas sure. http://www.monservice.com/delete?=1234 Imaginez un “crawler” qui trouve ce lien…
  • 13. L Trudeau Idempotence 13 HTTP et REST Les effets collatéraux de N > 0 demandes sont les mêmes que pour une seule demande Ref:http://www.youtube.com/watch?v=6dVNdFwqeKs&feature=c4-overview&list=UUzaZL1VLtdVTiZ8k07z65jg
  • 14. L Trudeau Antémémorable (Cacheable) 14 HTTP et REST Une réponse est antémémorable si elle peut être conservée à l’intérieure d’une antémémoire 2 + 2 = 4 (toujours, même quand il pleut) La réponse à cette requête est antémémorable Une requête pour la température n’est pas antémémorable Cependant, je peux la conserver dans un cache pour une courte période de temps (Eventual Consistency). Pour plus d’info : http://en.wikipedia.org/wiki/Eventual_consistency
  • 15. L Trudeau HTTP est une instance de REST 15 HTTP et REST En Java, on pourrait exprimer cette relation de la façon suivante: REST http = new HTTP();
  • 16. L Trudeau Comment HTTP est-il une instance de REST? 16 HTTP et REST REST impose 5 contraintes  Architecture Client Serveur  Architecture en couche  Serveur sans-état  Identification des éléments Antémémorable (Cacheable)  Interface uniforme • Requêtes par ressource • Manipulation par ressource • Messages autodescriptifs • Hypermédia pour représenter l’état (HATEOAS) En fait il y en a 6, mais le code sur demande est optionnel. Alors, concentrons-nous sur l’essentiel.
  • 17. L Trudeau RESTful HTTP 17 HTTP et REST Est-ce que HTTP est client-serveur?
  • 18. L Trudeau RESTful HTTP 18 HTTP et REST Est-ce que HTTP est en couche? À quel niveau se trouve-t-il? Pourquoi n’est-il pas au niveau 5? Qu’est-ce que ça implique d’être au niveau 7? Ref: http://www.cubrid.org/files/attach/images/220547/186/504/http_vs_spdy.png
  • 19. L Trudeau RESTful HTTP 19 HTTP et REST Est-ce possible d’identifier les éléments antémémorable? Oui! Comment?  Pragma: no-cache HTTP  Expires: Fri, 30 Oct 1998 14:19:41 GMT  Cache-Control: max-age=3600, must-revalidate Ref: http://www.mnot.net/cache_docs/
  • 20. L Trudeau Un Outil pour vous aider 20 HTTP et REST http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
  • 21. L Trudeau RESTful HTTP 21 HTTP et REST Est-ce que HTTP possède une interface uniforme? GET : sure, idempotent, antémémorable PUT : idempotent DELETE : idempotent HEAD : sure, idempotent POST Danger! Théorie vs. Pratique
  • 22. L Trudeau RESTful HTTP 22 HTTP et REST Est-ce que HTTP est sans état? Oui! Mais ma session Gmail? Elle est avec état et utilise HTTP. L’état n’est pas fourni par le protocole HTTP, et le protocole n’est pas conçu en fonction de cette session, c’est le serveur qui gère cet état Alors, je peux faire ce que je veux sur le serveur? Oui, mais ça ne sera pas « RESTful ». Quand qu’on dit qu’on dit qu’un « RESTful HTTP Service » ceci implique que le service respect les contraintes REST et par le fait même celles de HTTP
  • 23. L Trudeau RESTful HTTP 23 HTTP et REST Alors Gmail n’est pas REST? Mais je pensais que Google utilisait REST? En ce qui concerne Gmail, je ne peux pas répondre, mais REST ne veut pas dire sans-état, mais bien serveur sans- état. Il peut y avoir des états sur le client. Une autre approche est d’inclure l’état à la requête. Oui, mais je gaspille de la bande passante! C’est un compromis entre la bande passante, les ressources sur le serveur et l’usage d’antémémoire. Cependant, ce choix s’aligne avec les attributs de qualités de REST.
  • 25. L Trudeau Recette REST de Lucardo 25 HTTP et REST Voici une recette facile pour transformer vos services en services REST • Identifiez les ressources et concevez vos URI • Choisissez vos formats • Identifiez les méthodes et leur sémantique • Choisissez vos codes de réponses
  • 26. L Trudeau Pensez en terme de noms 26 HTTP et REST En REST on ne pense pas en terme d’opérations ou d’action En REST on pense en terme de noms et d’identifiants
  • 27. L Trudeau C’est Mal! 27 HTTP et REST http://api.example.com/listChiens http://api.example.com/getChien?id=1234… http://api.example.com/newChien?id=1234… http://api.example.com/setChien?id=1234… http://api.example.com/listChienRouge …
  • 28. L Trudeau L’approche REST 28 HTTP et REST http://api.example.com/chiens
  • 29. L Trudeau L’interface uniforme 29 HTTP et REST Ressource POST GET PUT DELETE /chiens Créer un nouveau chien Liste de tous les chiens Remplacer les chiens par d’autres chiens Effacer tous les chiens /chiens/123 4 Ajouter un chien au chien 1234 erreur Afficher chien 1234 S’il existe, modifier le chien Sinon, créer le chien erreur Effacer le chien
  • 30. L Trudeau Singulier ou pluriel? 30 HTTP et REST PLURIEL http://api.example.com/chiens http://api.example.com/chiens/1234 NE FAITES PAS! http://api.example.com/chiens http://api.example.com/chien/1234
  • 31. L Trudeau Impact sur votre conception 31 HTTP et REST Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
  • 32. L Trudeau Associations 32 HTTP et REST Tous les chiens de Bob (GET) http://api.example.com/bob/chiens Ajouter un chien à bob (POST) http://api.example.com/bob/chiens
  • 33. L Trudeau REST Pure vs REST Pragmatique 33 HTTP et REST Ref: https://xkcd.com/386/ XKCD Duty Calls
  • 34. L Trudeau Classification des APIs HTTP 34 HTTP et REST WS-* Web Services (SOAP) RPC URI-Tunneling (flickr 'REST' API) API exposé par ressources, mais les actions proviennent de paramètres dans l’URI HTTP-based (Twitter, Google Calendar) API exposé par ressources, Méthodes HTTP utilisées, utilisation de types génériques REST (Open Search) Réf: http://nordsc.com/ext/classification_of_http_based_apis.html#uri-rpc Ref: http://martinfowler.com/articles/richardsonMaturityModel.html
  • 35. L Trudeau Les versions 35 HTTP et REST Comment spécifier la version d’un API REST? Conseil :  Insérer la version dans l’URL  Les plus à gauche possible Par exemple : http://api.example.com/v1/chiens
  • 36. L Trudeau Comment spécifier le Format ? 36 HTTP et REST Une approche REST pure utilise l’entête Accept: Accept: application/json Plusieurs approches utilisent un paramètre ?type=json Conseil: ajouter le format à l’URL pour simuler une extension http://api.example.com/v1/chiens.json http://api.example.com/v1/chiens.xml