HTTP et REST

Post on 01-Jun-2015

389 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Mes diapositives sur REST. Il s'agit de mon interprétation de ce que REST est devenu avec les années. J'essaie de faire le lien avec SOAP, lorsque possible (mais le thème principal n'est pas SOAP vs RESTful HTTP).

Transcript

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

2

Attributs de qualité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

6

REST Vs. RESTful HTTPHTTP et REST

L Trudeau

7

Style Architectural?HTTP et REST

Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm

L Trudeau

8

Qu’est-ce qu’un style architecturalHTTP 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

ArchitectureGothique

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

9

Qu’est-ce que REST?HTTP et REST

REST est une description abstraiteLa conception de vos services web dépend implicitement de RESTREST 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 niveauAttention! REST n’est pas une technologie, mais bien un style architectural. Plusieurs mélangent REST et RESTful HTTP.

L Trudeau

10

Style vs. Patron?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

11

Principes fondamentaux RESTHTTP et REST

• Sure (Safe)• Idempotence• Sans état• Antémémorable (Cacheable)

L Trudeau

12

Une méthode sureHTTP 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

13

IdempotenceHTTP 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

14

Antémémorable (Cacheable)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émorableCependant, 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

15

HTTP est une instance de RESTHTTP et REST

En Java, on pourrait exprimer cette relation de la façon suivante:

REST http = new HTTP();

L Trudeau

16

Comment HTTP est-il une instance de REST?

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

17

RESTful HTTPHTTP et REST

Est-ce que HTTP est client-serveur?

Ben voyons

Tu vas pas nous enseigner

client-serveur!

L Trudeau

18

RESTful HTTPHTTP 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

19

RESTful HTTPHTTP 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

20

Un Outil pour vous aiderHTTP et REST

http://redbot.org/?descend=True&uri=http://www.etsmtl.ca

L Trudeau

21

RESTful HTTPHTTP et REST

Est-ce que HTTP possède une interface uniforme?

GET : sure, idempotent, antémémorable

PUT : idempotentDELETE : idempotentHEAD : sure, idempotentPOST

Danger!

Théorie vs.

Pratique

L Trudeau

22

RESTful HTTPHTTP 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

23

RESTful HTTPHTTP 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

24

RESTful HTTPHTTP et REST

L Trudeau

25

Recette REST de LucardoHTTP 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

26

Pensez en terme de nomsHTTP 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

28

L’approche RESTHTTP et REST

http://api.example.com/chiens

L Trudeau

29

L’interface uniformeHTTP 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/1234

Ajouter un chien au chien 1234erreur

Afficher chien 1234

S’il existe, modifier le chienSinon, créer le chien erreur

Effacer le chien

L Trudeau

31

Impact sur votre conceptionHTTP et REST

Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro

L Trudeau

32

AssociationsHTTP 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

33

REST Pure vs REST PragmatiqueHTTP et REST

Ref: https://xkcd.com/386/

XKCD Duty Calls

L Trudeau

34

Classification des APIs HTTPHTTP 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

35

Les versionsHTTP 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

36

Comment spécifier le Format ?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 extensionhttp://api.example.com/v1/chiens.jsonhttp://api.example.com/v1/chiens.xml

top related