Top Banner
ARCHITECTURE REST & WEB SERVICES Exposé – Informatique & Réseaux CHAMBON Florian 14 janvier 2014 1
36

ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

Sep 14, 2018

Download

Documents

tranque
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

ARCHITECTURE REST & WEB SERVICES Exposé – Informatique & Réseaux

CHAMBON Florian

14 janvier 2014

1

Page 2: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

� Introduction

� Présentation de Rest

� Serveur Java JAX-RS

� Démonstration

2 Exposé - Informatique & Réseaux

Page 3: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

� Introduction

� Présentation de Rest

� Serveur Java JAX-RS

� Démonstration

3 Exposé - Informatique & Réseaux

Page 4: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

WEB SERVICES

�  Un service est un travail réalisé par un fournisseur pour le compte d’un consommateur

�  Un service web est un programme informatique permettant la communication et l’échange de données entre applications et systèmes hétérogènes dans des environnements distribués – Wikipédia

�  Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application / machines – Communication inter application

4 Exposé - Informatique & Réseaux

Page 5: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

WEB SERVICES - TECHNOLOGIES

�  Un peu d’histoire

�  DCE / RCP - Distribued Computing Environnement

�  CORBA – Common Object Request Broker Architecture

�  DCOM – Distribued Component Object Model

�  RMI – Monde Java

�  Plusieurs technologies permettent d’implementer les Web Services

�  XML-RPC

�  SOAP services

�  Representational State Transfer (REST)

5 Exposé - Informatique & Réseaux

Page 6: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

� Introduction

� Présentation de Rest

� Serveur Java JAX-RS

� Démonstration

6 Exposé - Informatique & Réseaux

Page 7: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REPRESENTATIONNAL STATE TRANSFER

�  Créé pour interagir avec les systèmes distribués

�  Architecture orienté ressources

�  Créé en 2000 par Roy Fielding - Thèse de doctorat

�  Projet Waka

�  Principal auteur de la spécification HTTP

�  Membre fondateur de la fondation Apache

�  Développeur du serveur Web Apache

7 Exposé - Informatique & Réseaux

Page 8: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REPRESENTATIONNAL STATE TRANSFER

�  REST n’est pas : �  Un standard �  Un protocole

�  Un format �  REST est :

�  Bonne pratique

�  Pas de spécifications de la W3C

�  Une approche pour construire une application

�  Un type d’architecture pour les systèmes distribués

8 Exposé - Informatique & Réseaux

Page 9: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REPRESENTATIONNAL STATE TRANSFER

Web services = interopérabilité

�  Indépendant de la plateforme

�  Indépendant du language

� Utilise le Protocole HTTP pour échanger l’échange de données

9 Exposé - Informatique & Réseaux

Page 10: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

CONTRAINTES

� Contraintes émises par Roy Fielding

�  Client / Serveur - HTTP

�  Stateless – Sans état

�  Cache

�  Architecture multi couches

10 Exposé - Informatique & Réseaux

Page 11: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

ARCHITECTURE

Exposé - Informatique & Réseaux

11

Page 12: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REST - PRINCIPE CLÉS

� Une ressource distribuée sur un serveur distant

� Un identifiant de la ressource

� Des « verbes » HTTP permettant d’agir sur la ressource

� Une représentation de la ressource

12 Exposé - Informatique & Réseaux

Page 13: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

UNE RESSOURCE DISTRIBUÉE

13 Exposé - Informatique & Réseaux

Page 14: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

URL : IDENTIFIANT DE LA RESSOURCE

� Uniforme Ressource Locator

� Deux types d’URL :

�  URL member qui désigne une seule ressource ( Livre )

�  URL collection qui désigne une liste de ressources de même type

�  http://address:port/RootContext/Ressource(s)

14 Exposé - Informatique & Réseaux

Page 15: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

HTTP – IDENTIFIANT DES OPÉRATIONS

�  GET �  Usage : Read – Lecture d’une ressource / d’une collection

�  200 OK – 404 NOT FOUND

�  PUT �  Usage : Update – Mise à jour d’une ressource

�  201 CREATED – 204 NO CONTENT

�  DELETE �  Usage : Delete – Supression d’une ressource

�  200 OK – 404 NOT FOUND – 304 NOT MODIFIED

�  POST �  Usage – Create – Création d’une ressource

�  200 OK – 404 NOT FOUND

15 Exposé - Informatique & Réseaux

Page 16: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

EXEMPLE - LIBRARY

16 Exposé - Informatique & Réseaux

URL Méthode Action

http://locahost:8080/Library GET Récupération de tous les livres de la bibliothèque.

http://localhost:8080/Library/isbn-12

GET Récupération dans la bibliothèque d’un livre avec id = 12

http://localhost:8080/Library/ POST Création d’un livre dans la bibliothèque : Paramètres passées dans le corps de la requête HTTP

http://localhost:8080/Library/15-HarryPotter-JKRowling-Fantasy

POST Création d’un livre dans la bibliothèque avec les paramètres passée via l’URL

http://locahost:8080/Library/isbn-12

PUT Modifie le livre d’ID 12 avec les paramètres passés dans le corps de la requête

http://locahost:8080/Library/isbn-12

DELETE Supprime le livre d’ID 12 de la bibliothèque

Page 17: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

RÉPONSES HTTP – REPRÉSENTATION DES RESSOURCES

�  Le serveur ne renvoie pas une ressource mais une représentation de la ressource.

�  Pas de format d’échange imposé

�  Entête HTTP contient le type de la représentation :

�  Content Type

�  Une ressource : Plusieurs représentations possibles �  HTML

�  CVS

�  XML

�  JSON

17 Exposé - Informatique & Réseaux

Page 18: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

JSON ET XML

{

Isbn : 2070541274,

author : JK rowling, 

title :  Harry potter n° X,

style : Fantasy

}

18 Exposé - Informatique & Réseaux

<Book> <Isbn>2070541274</isbn> <author>JK Rowling</author> <title> Harry Potter .. </title> <style> Fantasy </style>

</Book>

Page 19: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

QUI L’UTILISE ?

19 Exposé - Informatique & Réseaux

Page 20: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

AVANTAGES DE REST

�  Facile à comprendre et à implémenter ( Framework dans plusieurs langages : Java – Python - Php )

�  Un client HTTP suffit pour accéder à un service RESTful.

�  Interopérabilité des systèmes

�  Interopérabilité des langages

�  Architecture scalable : Possibilité de répartir les requêtes sur plusieurs serveurs – stateless.

�  L'utilisation de formats standards comme JSON ou XML assure la compatibilité dans le temps.

20 Exposé - Informatique & Réseaux

Page 21: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

INCONVÉNIENTS/LIMITATIONS DE REST

�  La sécurité est inexistante – Utilisation d’HTTPS + Authentification

�  Le client doit conserver des données localement (stateless)

�  Consommation en bande passante – Données de session

�  Peut être problématique pour les Smartphones

21 Exposé - Informatique & Réseaux

Page 22: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

� Introduction

� Présentation de Rest

� Serveur Java JAX-RS

� Démonstration

22 Exposé - Informatique & Réseaux

Page 23: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REST & JAVA - SPÉCIFICATION JAX-RS

�  REST and Java

�  Java API for RESTFful web Services

�  JSR 311 - JSR 339

�  Version 2.0

�  Mise en oeuvre sur un serveur d’application

�  Le développement des services Web repose sur l’utilisation de classes Java et d’annotations.

23 Exposé - Informatique & Réseaux

Page 24: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

SPÉCIFICATION JAS-RX

�  Plusieurs implémentations possibles de la spécification JAX-RS

�  JERSEY : Oracle

�  Jersey.java.net

�  CXF : Apache

�  Xxf.apache.org

�  RESTEasy : Jboss

�  Jboss.org/resteasy

�  RESTlet

�  Restlet.com

24 Exposé - Informatique & Réseaux

Page 25: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

JAX-RS : ARCHITECTURE

25 Exposé - Informatique & Réseaux

Page 26: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

HELLO WORLD

@Path("/helloworld")

public class HelloWorldRestful {

@GET

@Produce(MediaType.Html) public String getHelloWorld(){

// Code source associé

Return « Hello World »;

}

}

26

Ø Définition d’un chemin pour associer la ressource hello a une URL

Ø  Lecture de la ressource

HelloWorld via une requete HTTP de type GET

Exposé - Informatique & Réseaux

Page 27: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

FIL ROUGE : GESTION D’UNE BIBLIOTHÈQUE

�  Présentation des contextes JAX-RS : Gestion d’une bibliothèque

�  Présentation des annotations Jax-RS

�  Mise en place d’un système CRUD ( Create – Read – Update – Delete)

�  Bibliothèque & livres = Ressources

�  Une bibliothèque est composée de livre

�  On peut lire - ajouter – supprimer – mettre a jour un livre

�  On peut effectuer une recherche en fonction de critères (ISBN et auteur )

�  On peut acceder a tous les livres présent dans la bibliothèque

27 Exposé - Informatique & Réseaux

Page 28: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

@PATH �  Une classe java doit être annotée par @Path pour qu’elle soit

traitée par des requêtes HTTP

�  L’annotation @Path sur une classe définit des ressources racines (Root Resources Class)

�  La valeur donnée à @Path correspond à une expression URL relative au contexte de l’application Web

�  http://localhost:8080/MyRestService/Library

�  Permet d’accéder à la bibliothèque

�  L’annotation @Path sur une méthode permet de spécifier le traitement

28 Exposé - Informatique & Réseaux

Page 29: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

@PATH

�  L’annotation @Path peut également annoter des méthodes de la classe

�  L’URL est la concaténation du @Path de la classe et du @Path de la méthode

�  Exemple : Je veux tous les livre d’un auteur précis

�  @Path(«/book/author-{author} »)

�  @GET @Path(« author/{author} ») public void getByAuthor(@PathParam(« author » String author){

// Do Something

}

29 Exposé - Informatique & Réseaux

Page 30: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

MÉTHODES HTTP : @GET, @POST, @PUT, @DELETE

�  L’annotation des méthodes Java permet de traiter des requêtes HTTP suivant le type de méthode (GET,POST..)

�  Annotation disponibles :

�  @GET, @POST, @PUT, @DELETE et @HEAD

�  Uniquement utilisable sur des méthodes Java et non sur des classes

�  Le nom de la méthode importe peu. C’est l’annotation qui importe et qui permet d’aiguiller la requête.

�  Opération CRUD sur les ressources

30 Exposé - Informatique & Réseaux

Page 31: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

@PATHPARAM – TEMPLATE PARAMETERS

�  Possibilité de définir des expressions plus complexes appelées Template Parameters

�  Le client envoie des informations dans l’url

�  Contenu limité par { … }

�  Spécifie l’isbn du livre recherché

�  Spécifie l’auteur dont on veut récupérer les livres

31 Exposé - Informatique & Réseaux

Page 32: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

@PATHPARAM

�  @GET @Path(« ibsn/{isbn} ») public void getByIsbn(@PathParam(« isbn » int isbn){

System.out.println(« isbn »);

}

�  @GET @Path(« author/{author} ») public void getByAuthor(@PathParam(« author » String author){

System.out.println(« author »);

}

Exposé - Informatique & Réseaux

32

Page 33: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

REPRÉSENTATION @CONSUMES @PRODUCES

�  L’annotation @Consumes est utilisée pour spécifier le / les types MIME qu’une méthode de ressource peut accepter

�  L’annotation @Produces est utilisée pour spécifier le / les types MIME qu’une méthode de ressource peut produire

�  Information présente dans l’entête HTTP – Content-Type

Exposé - Informatique & Réseaux

33

Page 34: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

DÉMONSTRATION

Exposé - Informatique & Réseaux

34

Page 35: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

CONCLUSION

�  A retenir : Rest

�  Architecture systèmes distribués

�  Une ressource distribuée sur un serveur distant

�  Un identifiant de ressource : URL

�  Des « verbe » HTTP permettant la communication client / serveur

�  Une représentation de la ressource

Exposé - Informatique & Réseaux

35

Page 36: ARCHITECTURE REST & WEB SERVICES - www …dr/XPOSE2014/ArchitectureREST/Architecture... · Ensemble de fonctionnalités métier exposées sur internet/intranet par et pour des application

� Merci � Questions ?

36 Exposé - Informatique & Réseaux