Vous êtes sur la page 1sur 36

SOA Services Web REST

Comprendre le style darchitecture : REST


Mickal BARON - 2011 mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr

Licence

Creative Commons
Contrat Paternit Partage des Conditions Initiales l'Identique
2.0 France

keulkeul.blogspot.com

http://creativecommons.org/licenses/by-sa/2.0/fr
REST - M. Baron - Page 2

Plan du cours

Lutilisation du Web aujourdhui ... Cest quoi REST ? Ressources Verbes Reprsentations
keulkeul.blogspot.com

Exemples Web Services REST Versus Etendus Outils


REST - M. Baron - Page 3

Droulement du cours Pdagogie du cours


Des bulles daide tout au long du cours Survol des principaux concepts en vitant une prsentation exhaustive

Logiciels utiliss
Navigateur Web, CURL, Poster

Pr-requis
keulkeul.blogspot.com

Ingnierie des donnes Schema XML

Ceci est une astuce

Remerciements
Djug

Ceci est une alerte

REST - M. Baron - Page 4

Ressources : Liens sur le Web Billets issus de Blog


wintermuteblog.blogspot.com/2010/01/wadl-toolbox.html bitworking.org/news/193/Do-we-need-WADL www.pompage.net/pompe/comment-j-ai-explique-rest-a-ma-femme www.biologeek.com/rest,traduction,web-semantique/pour-ne-plus-etre-en-rest-comprendrecette-architecture

Articles
www.ibm.com/developerworks/webservices/library/ws-restvsoap fr.wikipedia.org/wiki/Representational_State_Transfer

Cours

Prsentations
keulkeul.blogspot.com

www.slideshare.net/gouthamrv/restful-services-2477903 www.parleys.com/#id=306&st=5&sl=14

REST - M. Baron - Page 5

Ressources : Bibliothque RESTful Web Services


Auteur : Leonard Richardson & Sam Ruby diteur : Oreilly Edition : Dec. 2008 - 448 pages - ISBN : 0596529260

Java Web Services : Up and Running


Auteur : Martin Kalin diteur : Oreilly Edition : Fvrier 2009 - 316 pages - ISBN : 059652112X
keulkeul.blogspot.com

RESTful .NET
Auteur : Jon Flanders diteur : Oreilly Edition : Nov. 2008 - 320 pages - ISBN : 0596519206
REST - M. Baron - Page 6

Lutilisation du Web aujourdhui

1 2 2 1 2
Serveur WEB

1 1

keulkeul.blogspot.com

2 2

Extraction de ressources 1 Ressources 2

Serveur WEB

REST - M. Baron - Page 7

Lutilisation du Web aujourdhui Les ressources sont rcupres au travers les URLs

keulkeul.blogspot.com

Une ressource (serveur) est identifie par une URL

REST - M. Baron - Page 8

Cest quoi REST ? REST est lacronyme de REpresentational State Transfert Principes dfinis dans la thse de Roy FIELDING en 2000
Principaux auteurs de la spcification HTTP Membre fondateur de la fondation Apache Dveloppeur du serveur Web Apache

REST est un style darchitecture inspir de larchitecture du Web REST est


un style darchitecture
keulkeul.blogspot.com

une approche pour construire une application

REST nest pas


un format un protocole un standard
REST - M. Baron - Page 9

Cest quoi REST ? Les Services Web REST sont utiliss pour dvelopper des architectures orientes ressources Diffrentes nominations disponibles dans la littrature
Architectures Orientes Donnes (DOA) Architectures Orientes Ressources (ROA)

Les applications qui respectent les architectures orientes


keulkeul.blogspot.com

ressources sont respectivement nommes RESTful Dans la suite du cours nous utiliserons indiffremment la nomination REST et RESTful
REST - M. Baron - Page 10

Cest quoi REST ? Les fournisseurs Certains acteurs qui fournissent des Services Web REST

keulkeul.blogspot.com

REST - M. Baron - Page 11

Cest quoi REST ? Les fournisseurs Statistiques de lutilisation de Services Web REST et SOAP chez AMAZON
www.oreillynet.com/pub/wlg/3005

SOAP : 15%

keulkeul.blogspot.com

REST : 85%

REST - M. Baron - Page 12

Cest quoi REST ? : caractristiques Les services Web REST sont sans tats (Stateless)
Chaque requte envoye vers le serveur doit contenir toutes les informations leur traitement Minimisation des ressources systmes, pas de session ni dtat

Les services Web REST fournissent une interface uniforme base sur les mthodes HTTP
keulkeul.blogspot.com

GET, POST, PUT et DELETE

Les architectures orientes REST sont construites partir de ressources qui sont uniquement identifies par des URIs
REST - M. Baron - Page 13

Cest quoi REST ? : caractristiques Dans une architecture oriente REST, les ressources sont manipules travers des formats de reprsentations
Une ressource lie un Bon de Commande est reprsente par un document XML La cration dun Bon de Commande est ralise par la combinaison dune mthode HTTP Post et dun document XML

Dans une architecture oriente REST, la communication est


keulkeul.blogspot.com

obtenue par le transfert de la reprsentation des ressources Ltat est maintenue par la reprsentation dune ressource Par consquent, le client est responsable de ltat de la ressource
REST - M. Baron - Page 14

Cest quoi REST ? : Requte REST Ressources (Identifiant)


Identifi par une URI Exemple : http://localhost:8080/libraryrestwebservice/books

Mthodes (Verbes) pour manipuler lidentifiant


Mthodes HTTP : GET, POST, PUT and DELETE
keulkeul.blogspot.com

Reprsentation donne une vue sur ltat


Informations transfres entre le client et le serveur Exemples : XML, JSON,

REST - M. Baron - Page 15

Ressource et URI Une ressource est quelque chose qui est identifiable dans un systme
Personne, Agenda, Collection, Document, Image, Carte,

Une URI (Uniform Resource Identifier) identifie une ressource de manire unique sur le systme Une ressource peut avoir plusieurs URI et la reprsentation de la ressource peut voluer avec le temps
keulkeul.blogspot.com

Exemple

Identifiant primaire de la ressource

http://localhost:8080/books/aventure/harrypotter/2
Ressource de type collection

REST - M. Baron - Page 16

Ressource et URI Exemples dURIs


2 URIs diffrentes pour une mme ressource Ressource = 2me livre de Harry Potter

/books/aventure/harrypotter/2 /books/aventure/harrypotter/the_prisoner_of_azkaban
Ressource = The Prisoner of Azkaban

keulkeul.blogspot.com

/books/aventure/harrypotter
Ressource = tous les livres dHarry Potter

/books/aventure
Ressource = tous les livres daventure
REST - M. Baron - Page 17

Mthode Une ressource quelconque peut subir quatre oprations de base dsignes par CRUD
Create (Crer) Retrieve (Lire) Update (mettre jour) Delete (Supprimer)

REST sappuie sur le protocole HTTP pour exprimer les oprations via les mthodes HTTP
Create par la mthode POST
keulkeul.blogspot.com

Retrieve par la mthode GET Update par la mthode PUT Delete par la mthode DELETE

Possibilit dexprimer des oprations supplmentaires via dautres mthodes HTTP (HEAD, OPTIONS) REST - M. Baron - Page 18

Mthode : GET Mthode GET fournit la reprsentation de la ressource


Idempotent
Action : rcuprer

GET /books/aventure/harrypotter/2

keulkeul.blogspot.com

HTTP Status: 200 (OK) En-tte + Reprsentation


Client Serveur

REST - M. Baron - Page 19

Mthode : POST Mthode POST cre une ressource


Non idempotente (plusieurs crations de la mme ressource)
Action : crer

POST /books/aventure/harrypotter/ Reprsentation dans le corps

keulkeul.blogspot.com

HTTP Status: 201 (Created) En-tte


Client Serveur

REST - M. Baron - Page 20

Mthode : DELETE Mthode DELETE supprime une ressource


Idempotent
Action : supprimer

DELETE /books/aventure/harrypotter/2

keulkeul.blogspot.com

HTTP Status: 200 (Ok) En-tte


Client Serveur

REST - M. Baron - Page 21

Mthode : PUT Mthode PUT met jour une ressource


Idempotent
Action : mise jour

PUT /books/aventure/harrypotter/2 Reprsentation dans le corps

keulkeul.blogspot.com

HTTP Status: 200 (Ok) En-tte


Client Serveur
REST - M. Baron - Page 22

Reprsentation Fournir les donnes suivant une reprsentation pour


le client (GET) pour le serveur (PUT et POST)

Donnes retournes sous diffrents formats


XML JSON (X)HTML CSV
keulkeul.blogspot.com

Le format dentre (POST) et le format de sortie (GET) dun service Web dune ressource peuvent tre diffrents
REST - M. Baron - Page 23

Reprsentation Exemples : format JSON et XML


GET https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/fbsS

{ "kind": "urlshortener#url", "id": "http://goo.gl/fbsS", "longUrl": "http://www.google.com/", "status": "OK" }

Reprsentation des donnes en JSON

GET http://localhost:8080/librarycontentrestwebservice/contentbooks/string keulkeul.blogspot.com

<?xml version="1.0"?> <details> Ce livre est une introduction sur la vie </details>

Reprsentation des donnes en XML


REST - M. Baron - Page 24

Exemple : Google URL Shortener Google URL Shortener est un service de rduction dURL
code.google.com/apis/urlshortener/

Les actions proposes sont les suivantes


Rduire une URL en une URL plus courte (POST) Retrouver une URL longue partir dune URL courte (GET) Afficher les statistiques sur lutilisation dune URL rduite (GET)

Service gratuit et proposant une API REST pour le dveloppement


keulkeul.blogspot.com

Pour utiliser lAPI, ncessite lutilisation dune cl pour certaines actions lors de lenvoi dune requte Utilisation du plugin Poster disponible sous Firefox pour lmission de requte HTTP REST - M. Baron - Page

25

Exemple : Google URL Shortener (Dmonstration) Prsentation du site et des outils


Prsenter le site URLShortener : code.google.com/apis/urlshortener/

code.google.com/apis/urlshortener/v1/reference.html
Prsenter le site APIConsole : https//code.google.com/apis/console Activation du service URLShortener Prsenter le plugin Firefox Poster
keulkeul.blogspot.com

Cration dune URL rduite Reconstruire une URL rduite Information sur les URLs rduites
REST - M. Baron - Page 26

Exemple : Google URL Shortener (Dmonstration) Rduction URL (requte)


Ncessite une authentification via lutilisation dune cl

POST https://www.googleapis.com/urlshortener/v1/url?key=... Content-Type: application/json {"longUrl": "http://www.google.com/"}

keulkeul.blogspot.com

Requte HTTP de type POST avec contenu de type JSON

REST - M. Baron - Page 27

Exemple : Google URL Shortener (Dmonstration) Rduction URL (rponse)


Contenu du corps de la rponse qui correspond la ressource nouvellement cre au format JSON

keulkeul.blogspot.com

Informations places dans len-tte de la rponse

REST - M. Baron - Page 28

Exemple : Google URL Shortener (Dmonstration) Reconstruire une URL rduite (requte)
GET https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/fbsS

keulkeul.blogspot.com

REST - M. Baron - Page 29

Exemple : Google URL Shortener (Dmonstration) Reconstruire une URL rduite (rponse)

Contenu du corps de la rponse qui correspond la ressource nouvellement cre au format JSON
keulkeul.blogspot.com

REST - M. Baron - Page 30

Service Web Etendus VERSUS REST


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <hel:GetOrderDetail> <value>14546-xx-45</value> </hel:GetOrderDetail> </soapenv:Body> </soapenv:Envelope>

Client SOAP

Serveur REST

keulkeul.blogspot.com

GET http://localhost:8080/order?ordernum=14546-xx-45

Client

Serveur
REST - M. Baron - Page 31

Service Web Etendus VERSUS REST Les Services Web tendus (SOAP) et les Services Web REST diffrent par le fait que
Services Web tendus reposent sur des standards REST est un style darchitecture

Services Web tendus (SOAP)


Avantages Standardis Interoprabilit Scurit (WS-Security)
keulkeul.blogspot.com

Outill Inconvnients Performances (enveloppe SOAP supplmentaire) Complexit, lourdeur Cible lappel de service
REST - M. Baron - Page 32

Service Web Etendus VERSUS REST Services Web REST


Avantages Simplicit de mise en uvre Lisibilit par lhumain Evolutivit Repose sur les principes du Web
keulkeul.blogspot.com

Reprsentations multiples Inconvnients Scurit restreinte par lemploi des mthodes HTTP Cible uniquement lappel de ressource
REST - M. Baron - Page 33

WADL WADL (Web Application Description Language) est un langage de description XML de services de type REST WADL est une spcification W3C initie par SUN
www.w3.org/Submission/wadl/

Description des services par lments de type


Ressource, Mthode, Paramtre, Requte, Rponse

Lobjectif est de pouvoir gnrer automatiquement les


keulkeul.blogspot.com

APIs clientes daccs aux services REST Remarques


Peu doutils exploite la description WADL (http://wadl.java.net/) Apparu bien plus tard
REST - M. Baron - Page 34

WADL Exemple : Afficher le WADL de services REST


<application> <doc jersey:generatedBy="Jersey: 1.4 09/11/2010 10:30 PM"/> <resources base="http://localhost:8088/librarycontentrestwebservice/"> <resource path="/contentbooks"> <resource path="uribuilder2"> <method name="POST" id="createURIBooks"> <request> <representation mediaType="application/xml"/> </request> <response> <representation mediaType="*/*"/> </response> </method> </resource> <resource path="uribuilder1"> <method name="POST" id="createBooksFromURI"> <request> <representation mediaType="application/xml"/> </request> <response> <representation mediaType="*/*"/> </response> </method> </resource> ... </resource> </resources> </application>

keulkeul.blogspot.com

http://localhost:8088/librarycontentrestwebservice/application.wadl

REST - M. Baron - Page 35

Outils et bibliothques Des outils pour appeler des services REST


CURL : curl.haxx.se Poster (plugin Firefox) : https://addons.mozilla.org/en-US/firefox/addon/poster/ SOAPUI : www.soapui.org

Des plateformes pour dvelopper (serveur) et appeler (client) des services REST
keulkeul.blogspot.com

JAX-RS (Jersey) .NET PHP Python,

pour la plateforme Java

REST - M. Baron - Page 36

Vous aimerez peut-être aussi