CHAPITRE 3: les API Rest
1
Introduction
2
Rappel : Web Services (Définition)
q Services informatiques de la famille des technologies web permettant la communication
entre des applications hétérogènes dans des environnements distribués (Wikipédia).
q Solution d’intégrations de différents logiciels développés par des entreprises (ERP, CRM)
leur permettant de communiquer entre eux.
q Basés sur XML (déscription et échange) et utilisant en général les protocoles du web
comme canal de communication;
3
REST: Définition
§ REST est l'acronyme de REpresentational State Transfert
§ Principes définis dans la thèse de Roy FIELDING en 2000
- Principaux auteurs de la spécification HTTP
- Membre fondateur de la fondation Apache
§ REST est un style d'architecture inspiré de l'architecture du Web
§ REST est
- un style d'architecture
- une approche pour construire une application
§ REST n'est pas
- un format
- un protocole
- un standard
4
REST: Concepts
§ Les Services Web REST sont utilisés pour développer des architectures
orientées ressources
§ Les applications qui respectent les architectures orientées ressources sont
respectivement nommées RESTfuI
§ Les nominations Rest et RestFul sont utilisés indifféremment.
§ Les services Web REST fournissent une interface uniforme basée sur les
méthodes HTTP
- GET, POST, PUT et DELETE
§ Les architectures orientées REST sont construites à partir de ressources qui
sont uniquement identifiées par des URIs
5
REST: Caractéristiques
§ Dans une architecture orientée REST, les ressources sont manipulées à
travers des formats de représentations
- Une ressource liée à un Bon de Commande est représentée par un
document XML
- La création d'un Bon de Commande est réalisée par la combinaison
d'une méthode HTTP Post et d'un document XML
§ Dans une architecture orientée REST, la communication est obtenue par
le transfert de la représentation des ressources
6
REST: Requêtes
§ Ressources (Identifiant)
- Identifié par une URI
- Exemple : httpelocalhost:8080/librerieINSEAwebservice/books
§ Méthodes (Verbes) pour manipuler l'identifiant
- Méthodes HTTP : GET, POST, PUT and DELETE
§ Représentation
- Informations transférées entre le client et le serveur
- Exemples : XML, JSON
7
REST: Méthode
§ 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 par la méthode POST
- Retrieve par la méthode GET
- Update par la méthode PUT
- Delete par la méthode DELETE
§ Possibilité d'exprimer des opérations supplémentaires via d'autres méthodes HTTP (Ex : HEAD)
8
REST: Méthode
§ La méthode GET renvoie une représentation de la ressource telle
qu’elle est sur le système
§ La méthode POST crée une nouvelle ressource sur le système
§ La méthode DELETE supprime la ressource identifiée par l’URI sur le
serveur
§ La méthode PUT met àjour de la ressource sur le système
9
REST: Représentation
§ Fournir les données suivant une représentation pour
- GET
- PUT ou POST
§ Données retournées sous différents formats
- XML
- JSON
§ Le format d'entrée (POST) et le format de sortie (GET) d'un service Web
d'une ressource peuvent être différents
10
REST : JavaScript Object Notation
§ Pour les Web Services RESTful, les encodages les plus utilisé
s sont XML et
JSON. XML est un standard incontesté́mais souffre de quelques
inconvénients:
- Verbeux
- Difficilement lisible par un humain
- Dualité́entre les attributs et les éléments.
§ JSON est l'acronyme de JavaScript Object Notation.
§ C'est un format texte qui permet de représenter des données et de les
échanger facilement àl'instar d'XML.
11
REST : JavaScript Object Notation
§ Ce sous ensemble de JavaScript permet de décrire le modelé objet
de JavaScript. Deux types de structures sont disponibles :
- Objet : une collection de paire nom/valeur
- Tableau : une liste ordonnée de valeurs
§ Les valeurs peuvent être des types suivants : booléen, chaîn e de
caractères, nombre, ou valeur nulle.
12
REST : JavaScript Object Notation
{
"nom":"INSEA",
"age":57,
"addresse": { "rue":"avenue Irfane", "ville":"Rabat", "code":86945},
"telephone":[ {"type":"maison", "numero" : 123456}, {"type":"portable",
"numero": 654321} ]
}
§ Le format JSON ne fait pas de différence entre attribut et élément comme en
XML.
§ Il est plus concis et plus lisible.
<utilisateur nom= "INSEA" age= "57">
<adresse>
<rue>avenue Irfane</rue>
<ville>Rio</ville>
<code>86945</code>
</adresse>
<telephones>
<telephone type="maison">123456</telephone>
<telephone type="portable">654321</telephone>
</telephones> 13
</utilisateur>
REST: Spring MVC
§ Configuration de Spring MVC :
@Configuration
@EnableWebMvc // Pour pouvoir travailler avec SpringMvc
@ComponentScan(basePackages = "[Link]")
Un service Rest en utilisant Spring MVC :
• Classe annotée @RestController ou @Controller
• Url spécifiée par @RequestMapping(value = "/test") (au dessus du nom de la classe)
14
REST: Spring MVC
§ Requête :
- @RequestMapping(value = "/vehicules" , method = [Link]) :
Annotation pour mapper des requêtes Web sur des classes et / ou des méthodes
qui prennent en charge ces annotations.
- On doit spécifier la méthode (Post ou Get, etc.):
- @GetMapping : Abréviation de @RequestMapping pour la méthode Get
- @PostMapping : Abréviation de @RequestMapping pour la méthode Post
- @ResponseBody : Annotation qui indique que la valeur de retour de méthode
doit être liée au corps(Body) de la réponse Web.
15
TP 4 : Spring Mvc et Rest
16