Module SOA
A.U 2022-2023
JAX-RS
Objectifs
Comprendre le style d’architecture REST.
Comprendre les différences entre les services web étendus (SOAP) et les services web
REST.
JAX-RS
2
Plan
• Présentation de REST
• Motivation pour REST
• Principes de REST
• Développement de services web REST
java
JAX-RS
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.
JAX-RS
4
Présentation de REST 2/2
REST utilise des standards:
- HTTP et les méthodes HTTP (GET, POST, PUT, DELETE) pour
effectuer des opérations sur les ressources.
- URL
- XML/JSON pour échanger les données
JAX-RS
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
JAX-RS
6
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
JAX-RS
7
Principes de REST 1/5
URI
http://weather.com/tunis
Ressource
La météo de Tunis
Représentation
JAX-RS
8
Principes de REST 2/5
Une ressource
Un identifiant de ressource
Une représentation de la ressource
Interagir avec les ressources
– Requêtes HTTP : GET, POST, PUT et
DELETE
JAX-RS
9
Principes de REST 3/5
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,
JAX-RS
Text, JSON, … 10
Principes de REST 4/5
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)
Create
•REST POST
s’appuie sur le protocole HTTP pour exprimer les opérations via les méthodes
Retriev
HTTP GET
e PUT
Update DELETE
Delete
JAX-RS
11
Principes de REST 5/5
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
JAX-RS
12
WADL 1/2
Web Application Description Language
C’est un langage de description XML de services de type REST
L’objectif est de pouvoir générer automatiquement les APIs clientes d’accès aux
services REST
JAX-RS
13
WADL
2/2
Exemple
JAX-RS
14
Services Web REST avec Java
JAX-RS: Java API for RESTful Web Services
Spécification décrivant la mise en œuvre et la consommation 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, @POST, définit l’action implémentée par le service
@DELETE
@Produces spécifie le type de la réponse du service
@Consumes spécifie le type accepté en entré du service
JAX-RS
15
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
16
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 et consommer des services
web REST
JAX-RS
17