Les services Web
REST
Najet ZOUBEIR
2023-2024
Agenda
Rappels sur le Présentation de
01 HTTP 02 REST
Caractéristiques
03 de REST 04 Principes de REST
05 REST vs SOAP 06 JSON
01
HTTP :
Rappels
HTTP : Généralités (1)
• HyperText Transfer Protocol
• Le protocole internet
• Protocole Client/serveur non connecté, sans état
• Transfert de différents types de formats :
• Texte, hypertexte, image, vidéo, son,…
• Ressource :
• Donnée, objet ou service réseau qui peut être identifié par un URI
• Disponibles dans plusieurs représentations (par exemple, plusieurs
langues, formats de données, tailles et résolutions)
HTTP : Généralités (2)
• Conversation requête-réponse
• Programme demandeur (client) établit une connexion avec le
programme receveur (serveur)
• Le client envoie une requête
• Le serveur répond par une réponse
• Ne gère pas la connectivité réseau ou comment les
informations sont transmises
• C’est le rôle de TCP/IP
HTTP : Généralités (3)
HTTP : Uniform Resource
• URL : Uniform Resource Locator
• Fait référence à un protocole existant
• http:, ftp:, mailto:, gopher:, news:
• Pointe sur un document dans un serveur spécifique
• URN : Uniform Resource Name
• Identifiant persistent, unique globalement, indépendant de la
localisation
• URI : Uniform Resource Identifier
• Collection de URLs et URNs
HTTP : Requête
HTTP : Méthode
Méthode Effet
Get Retourne un ou plusieurs objets
Head Retourne des informations à propos d’un
objet
Post Envoie des informations à stocker sur le
serveur ou en entrée d’un script
Put Envoie une nouvelle copie de l'objet existant
au serveur
Delete Supprime un objet Généralement
interdites
HTTP : Réponse
HTTP : Status (1)
• Réponse du serveur au client
• Sous la forme : <code-statut> <commentaire>
• 1xx : statut informative
• 200 – 299 : Succès de la requête client
• 200 : OK, 201 : succès de la requête POST, 202 : requête
acceptée,…
• 300 – 399 : Redirection de la requête client, d’autres mesures
doivent être prises pour achever la demande
• 300 : multiple localisations de la ressource, 302 : ressource
déplacée temporairement,…
HTTP : Status (2)
• 400 – 499 : Erreur Client
• 400 : bad request, 401 : non autorisé, 402 : paiement requis, 403 :
accès interdit, 404 : ressource non trouvée,…
• 500 – 599 : Erreur serveur
• 500 : erreur interne, 501 : méthode non implémentée, 502 : bad
gateway, 503 : service unavailable,…
02
Présentation
de REST
Présentation de REST (1)
• Representational State Transfer
• Un style d’architecture pour les applications web
• Fortement basé sur le HTTP
• Non seulement comme un protocole de transport
• REST n’est pas un standard
• REST n’est pas un protocole
• REST n’est pas un format
Présentation de REST (2)
• Utilisation des standards existants du web :
• HTTP, URL, XML, types MIME, JSON
• REST est orienté ressource :
• Une ressource ou pièce d’information est adressée par un URI
et passée d’un serveur à un client ou l’inverse
REST : Quelques utilisateurs
03
Caractéristiques
Caractéristiques de REST (1)
• Client-serveur
• Sans état (stateless)
• Possibilité de mise en cache (cacheable)
• Interface uniforme
• Système en couches
• Code à la demande
Caractéristiques de REST (2)
• Client-serveur
• Un client récupère les ressources d'un serveur ou
met à jour les ressources sur un serveur.
• Séparation entre la présentation (client) et le stockage
des données (serveur).
• Portabilité (l'interface utilisateur peut être portée sur
différentes plates-formes).
Caractéristiques de REST (3)
• Sans état (stateless)
• Une requête client contient toutes les informations
nécessaires au serveur pour comprendre la requête.
• Pas besoin de stocker le contexte (état) sur le serveur
• Pas de session pour sauvegarde les informations du client
• Meilleure évolutivité.
Caractéristiques de REST (4)
• Possibilité de mise en cache (cacheable)
• Les données (ressources) doivent être étiquetées
comme pouvant être mises en cache ou non.
• Utilisation des serveurs proxy
• Améliorer les performances du réseau
Caractéristiques de REST (5)
• Interface uniforme
• Les ressources sont identifiées d’une manière
standard et uniforme :
• URI
• Méthodes HTTP : Get, Post,…
Caractéristiques de REST (6)
• Système en couche
• Les couches (ou niveaux) visent la décomposition
des fonctionnalités du système :
• Encapsulation des fonctionnalités en couches (ex :
encapsulation de services existants derrière une interface
standard).
• Décomposition des fonctionnalités du système en client,
serveur et intermédiaire.
Caractéristiques de REST (7)
• Code à la demande
• Contrainte facultative pour un système RESTful
• Possibilité de téléchargement du code sous la forme
de scripts ou applets
• Meilleure extensibilité
04
Principes
REST : Architecture
https://www.altexsoft.com/blog/rest-api-design/
Principes de REST (1)
• REST utilise des URI simples (en fait des URL) pour adresser
et nommer les ressources
• REST utilise des représentations standards des ressources :
• HTML, XML, JSON, GIF, JPEG,...
• REST utilise l'en-tête HTTP « Content-type » (types MIME
comme text/html, text/plain, text/xml, text/javascript pour
JSON etc.) pour indiquer l'encodage de la ressource.
Principes de REST (2)
• Contrairement à WS basés sur RPC, où la méthode d'accès
(CRUD) est mappée et appliquée aux messages SOAP, REST
utilise les méthodes HTTP disponibles comme interface de
ressources.
• Create (C) HTTP POST
• Retrieve (read) (R) HTTP GET
• Update (U) HTTP PUT
• Delete (D) HTTP DELETE
Exemple d’échange REST (1)
Exemple d’échange REST (2)
• 1. & 2. Demande de liste de produits :
• Le client demande une liste de produits disponible sous l'URL
http://www.cool-products.com/products&flavor=xml (URL1).
• La réponse contient la ressource codée en XML.
• 3. & 4. Sélection de produits :
• Le client sélectionne le produit 00345 en demandant l'URL
http://www.cool-products.com/products/00345&flavor=xml (URL2).
• La réponse contient une représentation XML des informations produit
pour le produit 00345.
Exemple d’échange REST (3)
• 5. & 6. Passer un bon de commande :
• Le client passe un bon de commande (Purchase Order PO) pour le
produit 00345 en demandant la ressource sous l'URL http://www.cool-
products.com/products/00345/PO?quantity=7 (URL3).
• Le bon de commande contient des informations complémentaires
renseignées sur le client (nom du client etc.).
• La demande utilise la méthode POST accompagnée de la
représentation XML du bon de commande.
Exemple d’URLs
REST : Avantages
• Utilisation de HTTP comme protocole applicatif et non
protocole de transport ;
• Possibilité d’utiliser le cache réseau
• Interface uniforme
• Un SW REST a une interface orientée autour des messages
HTTP.
• Meilleures performances
• il consomme moins de bande passante et de ressources
05
REST vs
SOAP
REST vs SOAP : Architectures (1)
REST vs SOAP : Architectures (2)
SOAP REST
SOAP utilise la même URL REST utilise différentes URLs
(URL1 dans l'exemple) pour pour adresser les ressources
toutes les interactions. (URL1, URL2 et URL3 dans
Le serveur SOAP analyse le l’exemple).
message SOAP pour Le serveur Web envoie
déterminer la méthode à directement une requête à une
appeler. opération (l'URL adresse une
Tous les messages SOAP sont ressource).
envoyés avec des requêtes REST mappe le type d'accès
HTTP POST. aux méthodes HTTP
Tableau comparatif (1)
Aspect SOAP REST
Standards SOAP, WSDL Pas de nouveaux standards
Utilisation de standards existants :
HTTP1.1
Adressage des Indirect à travers les Chaque ressource possède sa propre
ressources opérations SOAP URL
URL Utilisée uniquement Utilisée pour adresser des
pour adresser le ressources individuelles
serveur SOAP
Gestion des Les messages « Fault » Élement <error> dans la réponse
erreurs de SOAP HTTP (exp : code erreur HTTP)
The State of API Integration report 2017
Tableau comparatif (2)
Aspect SOAP REST
Représentation XML Tous les formats définis par HTTP
des données (texte, XML, JSON, JPG,…)
Utilisation de Uniquement comme Les actions sur les ressources
HTTP un protocole de (CRUD) sont mappées sur les
transport méthodes HTTP (GET, POST,…)
Annuaire/ UDDI, WSDL Pas d’annuaire
Découverte de Plusieurs vendeurs d’API
services
Portée (quelle Dans le corps SOAP Dans l’URL
donnée?) (body)
The State of API Integration report 2017
Tableau comparatif (3)
Aspect SOAP REST
Performances Plus volumineux donc Réduction de la taille des messages +
plus lourd utilisation du cache donc plus léger
Sécurité Prend en charge le Prend en charge le chiffrement
chiffrement Plusieurs mesures de sécurité : OAuth,
Sécurité basée sur HTTP Basic Security,…
l’utilisation des
standards
État Stateful Stateless
The State of API Integration report 2017
REST vs SOAP : Cas d’utilisation
SOAP REST
Quand il est nécessaire d’avoir Ressources et bande passante
un niveau garanti de fiabilité et limitées
de sécurité Quand il n’est pas nécessaire de
Besoin d’une communication maintenir un état des données
stricte et formelle : les d’une requête à l’autre
standards Quand il est nécessaire de
Quand il est nécessaire de mettre en cache de nombreuses
maintenir un état des données requêtes
d’une requête à l’autre Besoin de coder rapidement
06
JSON
JSON (1)
• JavaScript Object Notation
• Format textuel léger pour l’échange de données
• Inspiré de la notation des objets dans le langage
JavaScript
• Il comprend :
• 2 types composés : objet ou liste
• 4 types scalaires : booléen, nombre, chaine de caractère et
null
Quelques statistiques…
The State of API Integration report 2017
Références
● « REST : Comprendre ce style d’architecture », Mickael BARON
● « OVERVIEW OF REST, AN ARCHITECTURAL STYLE FOR DISTRIBUTED
WEB BASED APPLICATIONS », Peter R. Egli