18/10/2020
REST
Representational State Transfer
Module SOA
Objectifs
Comprendre le style d’architecture REST.
Comprendre les différences entre les services web étendus (SOAP) et les
services web REST.
Rest 2
1
18/10/2020
Plan
• Présentation de REST
• Motivation pour REST
• Principes de REST
• Différences entre SOAP et REST
• Développement de services web REST java
Rest 3
Présentation de REST 1/2
REST est l’acronyme de REpresentational State Transfert
Principe défini dans la thèse de Roy FIELDING en 2000
-Il est l’un des principaux auteurs de la spécification HTTP
-Il est le développeur du serveur Web Apache
REST est un style d’architecture inspiré de l’architecture du Web pour construire
des services web
Un style d’architecture est un ensemble de contraintes qui
permettent, lorsqu’elles sont appliquées aux composants
d’une architecture, d’optimiser certains critères propres au
cahier des charges du système à concevoir.
Rest 4
2
18/10/2020
Présentation de REST 2/2
REST n’est pas:
- un format
- un protocole
- un standard
Bien que REST ne soit pas un standard, il utilise des standards:
- HTTP
- URL
- XML/HTML
Rest 5
Motivation pour REST 1/2
REST est une alternative à SOAP
En 2006, Google a abandonné son API SOAP au profit d'une API simplifiée
REST
Source: http://www.google.com/trends/explore?hl=fr#q=rest%20api%2Csoap%20api&cmpt=q
Rest 6
3
18/10/2020
Motivation pour REST 2/2
REST est léger et simple :
– Les messages sont courts, faciles à décoder par le navigateur et par le
serveur d’application.
REST est auto-descriptif :
vous pouvez naviguer à travers ses ressources comme vous le
feriez avec une page Web. Il y a une URL intuitive unique pour
chaque ressource. On peut facilement en déduire la structure des
ressources sans avoir besoin de beaucoup de documentation.
REST est stateless :
– Consommation de mémoire inférieure
REST peut être géré en cache
– mise en cache possible donc meilleure montée en charge
Rest 7
Principes de REST 1/7
URI
http://weather.com/tunis
Ressource
La météo de Tunis
Représentation
Rest 8
4
18/10/2020
Principes de REST 2/7
Une ressource
Un identifiant de ressource
Une représentation de la ressource
Interagir avec les ressources
– Requêtes HTTP : GET, POST, PUT et DELETE
Rest 9
Principes de REST 3/7
Ressources (Identifiant)
•Identifié par une URI
Exemple : http://localhost:8080/libraryrestwebservice/books
Méthodes (Verbes)
• pour manipuler la ressource
• Méthodes HTTP : GET, POST, PUT and DELETE
Représentation
• donne une vue sur l’état de la ressource
• informations transférées entre le client et le serveur
Exemples : XML, Text, JSON, …
Rest 10
5
18/10/2020
Principes de REST 4/7
Méthodes
•Une ressource quelconque peut subir quatre opérations de base désignées par
CRUD
Create (Créer)
Retrieve (Lire)
Update (mettre à jour)
Delete (Supprimer)
•REST s’appuie sur le protocole HTTP pour exprimer les opérations via les méthodes
HTTP
Create POST
Retrieve GET
Update PUT
Delete DELETE
Rest 11
Principes de REST 5/7
Méthodes
• Méthode GET fournit la représentation de la ressource
GET: /produits/tv
HTTP status: 200 (OK)
Client Représentation Serveur
• Méthode POST crée une ressource
POST: /produits/tv
Représentation dans le corps
HTTP status: 201 (Created)
Client Serveur
Rest 12
6
18/10/2020
Principes de REST 6/7
Méthodes
• Méthode DELETE supprime une ressource
DELETE: /produits/tv/2
HTTP status: 200 (OK)
Client Serveur
• Méthode PUT met à jour une ressource
PUT: /produits/tv/2
Représentation dans le corps
HTTP status: 200 (Ok)
Client
Serveur
Rest 13
Principes de REST 7/7
Représentation
Fournir les données suivant une représentation pour:
• le client (GET): format de sortie
• le serveur (PUT et POST): format d’entrée
La représentation d’une ressource peut prendre différents formats:
• XML
• JSON
• Text
•…
Le format d’entrée (PUT et POST) et le format de sortie (GET) d’un service Web d’une
ressource peuvent être différents
Rest 14
7
18/10/2020
WADL 1/2
Web Application Description Language
est un langage de description XML de services de type REST
est une spécification W3C initiée par SUN
l’objectif est de pouvoir générer automatiquement les APIs clientes d’accès aux
services REST
Remarques
-Peu d’outils exploite la description WADL
-Apparu bien plus tard
Rest 15
WADL 2/2
Exemple
Rest 16
8
18/10/2020
Service web étendus VS REST 1/5
Services web étendus sont orientés activité
Les opérations dépendent des
types des activités
Services web REST sont orientés ressource
Les mêmes opérations quelque
soit la resource
Rest 17
Service web étendus VS REST 2/5
Protocole de communication
Services web étendus
Message SOAP
Client Serveur
REST
Requête/Réponse HTTP
Client Serveur
Rest 18
9
18/10/2020
Service web étendus VS REST 3/5
Rest 19
Service web étendus VS REST 4/5
Rest 20
10
18/10/2020
Service web étendus VS REST 5/5
Services Web étendus Services Web REST
Avantages Avantages
-Standardisé -Simplicité
-Sécurité (WS-Security) -Lisibilité par l’humain
-Outillé -Représentations
multiples
Inconvénients Inconvénients
-Complexité, lourdeur -Sécurité restreinte
Rest 21
Exemples Frameworks REST (1/2)
22
11
18/10/2020
Exemples Frameworks REST (2/2)
23
JAX-RS :API REST en Java
JAX-RS: Java API for RESTful Web Services
Spécification décrivant la mise en œuvre des services web REST
JAX-RS est basé sur les annotations
@Path définit le chemin de la ressource. Cette
annotation se place sur la classe et/ou sur la
méthode implémentant le service.
@GET, @PUT, définit l’action implémentée par le service
@POST,
@DELETE
@Produces spécifie le type de la réponse du service
@Consumes spécifie le type accepté en entré du service
Rest 24
12
18/10/2020
Services Web REST avec Java
Différentes implémentations de JAX-RS sont disponibles:
• JERSEY (Oracle)
• CXF (Apache)
• RESTEasy (JBoss)
• RESTlet
Seule l’approche bottom-up est possible
• Annoter une classe POJO
• Compiler et déployer
JAX-RS se limite à l'implémentation serveur, la spécification ne propose rien du
côté client.
Rest 25
En résumé
• REST est un style d’architecture
• REST est une alternative aux services web étendus (SOAP)
• REST se base sur le protocole HTTP
• JAX-RS est l’API java permettant de développer des services web REST
Rest 26
13