Applications et Services WEB: Architecture REST · Services WEB Architecture REST JavaEE et JAX-RS...

45
Services WEB Architecture REST JavaEE et JAX-RS Bibliographie Applications et Services WEB: Architecture REST Erick Stattner Maitre de Conférences en Informatique Université des Antilles France [email protected] www.erickstattner.com Erick Stattner Applications et Services WEB: Architecture REST 1 / 45

Transcript of Applications et Services WEB: Architecture REST · Services WEB Architecture REST JavaEE et JAX-RS...

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

Applications et Services WEB:Architecture REST

Erick Stattner

Maitre de Conférences en InformatiqueUniversité des Antilles

[email protected]

Erick Stattner Applications et Services WEB: Architecture REST 1 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Outline

1 Services WEBDéfinitionsExemples de service WEBArchitectures pour les WEB Services

2 Architecture REST

3 JavaEE et JAX-RS

4 Bibliographie

Erick Stattner Applications et Services WEB: Architecture REST 2 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBDéfinitions

Introduction

Un service Web est un programme sollicité via Internet par différentstype de clients, permettant l’échange de données afin quel’application appelante puisse intégrer le résultat de cet échange à sespropres analyses.Les requêtes et les réponses s’effectuent dans des formats ouverts(HTML, XML, JSON ou text) et transitent par Internet.

Erick Stattner Applications et Services WEB: Architecture REST 3 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBDéfinitions

Principales caractéristiques:

Fonctionnalité utilisable via Internet

Inter-opérables: Interface publique décrite d’une manière interprétablepar tous

Systèmes faiblement couplés, client ne connaît pas forcément lefournisseur

Le transport des données repose sur des "protocoles du WEB":HTTP, FTP, SMTP, ...

Standard ouvert: Échange de données s’effectue dans un formatstandardXML, JSON, HTML, Text, ...

Le client est chargé d’analyser, traiter et/ou afficher les donnéesreçues

Indépendante des plates-formes et des langages

Erick Stattner Applications et Services WEB: Architecture REST 4 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBExemples de service WEB

Exemple: Analyse des données

Erick Stattner Applications et Services WEB: Architecture REST 5 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBExemples de service WEB

Exemple: Analyse des données

Erick Stattner Applications et Services WEB: Architecture REST 6 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBExemples de service WEB

De nombreux services proposés par Googlehttps://developers.google.com/apis-explorer/#p/

Analyse de données

Traduction

Réduction d’URL

Statistique fréquentation site web

etc.

Erick Stattner Applications et Services WEB: Architecture REST 7 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

Deux grandes familles d’architecture pour les services WEBSOAP-based architecture

I Protocole de communications pour des systèmes distribués.I Il est décrit en XML et standardisé par le W3C.I Il encapsule les données échangées dans une enveloppe qui peut-être

chiffrée et contenir des pièces jointes.

RESTFul architectureI REST (Representational State Transfer) est un style architecture de

services WebI Introduite en 2000 par Roy Fiedling dans sa thèse de doctorat.I REST est une "méthodologie" pour la construction d’une application pour

les services WEB.

Erick Stattner Applications et Services WEB: Architecture REST 8 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP-based architecture

SOAP: Simple Object Access Protocol

Basé sur 3 acteurs principauxI Fournisseur de serviceI AnnuaireI Client

Erick Stattner Applications et Services WEB: Architecture REST 9 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP: Service provider

Définit le service et ses interfaces

Publie sa description dans l’annuaire

Effectue le traitement

Renvoie la réponse

Erick Stattner Applications et Services WEB: Architecture REST 10 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP: Annuaire

Maintient à jour une liste de services

Reçoit et enregistre la description des services

Reçoit et répond aux recherches de service

Erick Stattner Applications et Services WEB: Architecture REST 11 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP: Programme client

Obtient la description du service

Fait la requête auprès du fournisseur de service

Reçoit et traite le réponse

Erick Stattner Applications et Services WEB: Architecture REST 12 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

RESTFul architecture

REST: REpresentational State Transfer

Façon de concevoir une application

Définit un ensemble de contraintes pour l’accès et la manipulation desdonnées

Structure l’application en différentes ressources

Architecture orientée ressource

Se base uniquement sur le protocole HTTP

Basé sur le principe client/serveur

Erick Stattner Applications et Services WEB: Architecture REST 13 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

RESTFul architecture

Erick Stattner Applications et Services WEB: Architecture REST 14 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP VS REST

Erick Stattner Applications et Services WEB: Architecture REST 15 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

Bilan SOAP

Inconvenients

Performances (encapsulation SOAP des données)

Complexité, lourdeur de la mise en place/maintenance

Avantages

Standardisé

Interopérabilité

Sécurité (Possibilité de chiffrer échange SOAP)

Erick Stattner Applications et Services WEB: Architecture REST 16 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

Bilan REST

Inconvenients

Pas vraiment de standard

Sécurité restreinte par l’emploi du HTTP, format des données

Avantages

Simplicité mise en place/maintenance

Repose sur des principes éprouvés (WEB)

Services facilement identifiables

Erick Stattner Applications et Services WEB: Architecture REST 17 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

DéfinitionsExemples de service WEBArchitectures pour les WEB Services

Services WEBArchitectures pour les WEB Services

SOAP VS REST

Erick Stattner Applications et Services WEB: Architecture REST 18 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Outline

1 Services WEB

2 Architecture RESTPrésentationRessourcesInterfaces et représentationsOutils

3 JavaEE et JAX-RS

4 Bibliographie

Erick Stattner Applications et Services WEB: Architecture REST 19 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTPrésentation

Présentation

REST: REpresentational State Transfer

Décrit par Roy T. Fielding dans sa thèse de Doctorat en 2000, Chap 5"Architectural Styles and the Design of Network-based SoftwareArchitectures"http://goo.gl/q68TE4

I Membre fondateur de la fondation ApacheI Dev. du serveur WEB Apache

Style d’architectureI Repose sur le protocole HTTPI Utilisé pour développer des Services WEB

Erick Stattner Applications et Services WEB: Architecture REST 20 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTPrésentation

PrésentationDans une architecture REST

I TOUT est ressource (archi. orientée ressource)I Ressources identifiées par une URI (Uniform Resource Identifier )I Ressources manipulables via interface communeI Ressources ont différentes représentations: XML, TEXT, JSON, etc.

Quand une application respecte ces principes: RESTFul

Important

Les services WEB avec REST sont sans états (Stateless)I Pas de mémoire des requêtes antérieuresI Chaque requête envoyée doit contenir toutes les informations nécessaires

au traitement

Erick Stattner Applications et Services WEB: Architecture REST 21 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTPrésentation

3 concepts majeurs:1 Ressource (Identifiant)

I Identifiée par une URI2 Opération (Interface)

I Action à effectuer sur la ressourceI Méthodes HTTP

3 Représentation (Vue de la ressource ou de son état)I Informations échangées avec le serviceI TEXT, XML, JSON, ...

Erick Stattner Applications et Services WEB: Architecture REST 22 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTRessources

RessourceTout ce qui est identifiable/manipulable dans le système

I Document, Image, Personne, Le montant du compte d’un client, etc.

Identifié de manière unique par un lien (URI)

Une ressource peut avoir plusieurs URI

Une URI identifie une seule ressource (ou un seul groupe deressources)

Construite de façon hiérarchique

La représentation d’une ressource peut évoluer avec le tempsI Lié au temps: ex. Dernier articleI Modification structure: ex. Ajout d’un champ

Erick Stattner Applications et Services WEB: Architecture REST 23 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTRessources

Structure classique

Structure hiérarchique

Construction classiqueI http://domaine.com/<plus général>/../<plus spécifique>

Exemples d’URIs

/livre/SF

/livre/SF/harrypotter/

/livre/SF/harrypotter/5

/livre/SF/harrypotter/l_ordre_du_phenix

/livre/SF/harrypotter/5/année

/livre/aventure/meilleur_vente

/livre/search/50_nuances

Erick Stattner Applications et Services WEB: Architecture REST 24 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTInterfaces et représentations

Interfaces

REST fournit une interface uniforme

Chaque ressource supporte 4 opérations de base (CRUD)I Create, Read, Update, Delete

REST s’appuie sur les méthodes HTTP pour ces opérationsI GET:

Définit un accès en lecture. La ressource n’est pas modifiée.I POST:

Met à jour une ressource existanteI PUT:

Crée une nouvelle ressourceI DELETE:

Supprime une ressource

Erick Stattner Applications et Services WEB: Architecture REST 25 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTInterfaces et représentations

Exemples:

GET: /livre/SF/harrypotter/

POST: /livre/SF/harrypotter/

PUT: /livre/SF/harrypotter/2

DELETE: /livre/SF/harrypotter/2

Attention

Toutes les méthodes ne sont pas nécessairement implémentées !Ex. POST: /livre/SF

Erick Stattner Applications et Services WEB: Architecture REST 26 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTInterfaces et représentations

Rappel sur les requêtes HTTP:

Important

Rappel sur les requêtes HTTP: http://goo.gl/uoN0lTsource: openclassrooms

Erick Stattner Applications et Services WEB: Architecture REST 27 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTInterfaces et représentations

Représentation:Le client et le serveur échange des "représentations" des ressources enutilisant une interface et un protocole standardisé

I Le client: lorsqu’il reçoit avec GETI Le serveur: lorsqu’il recoit avec PUT ou POST

Généralement: TEXT, JSON, XML, HTML, CSV, Défini par l’utilisateur

Une même ressource peut-etre proposée sous différents formats

Erick Stattner Applications et Services WEB: Architecture REST 28 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTInterfaces et représentations

Exemple:

Erick Stattner Applications et Services WEB: Architecture REST 29 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTOutils

Outils pour le dev.

Advanced REST client: Chrome

Postman: Chrome

Poster: Firefox

API pour mettre en place Service RESTPHP (Voir liste API: http://goo.gl/OYiTjY)

I CURLI HttpFulI EpiphanyI ...

JavaEE (JAX-RS, JSR311)I JerseyI SpringI RESTeasyI RestletI ...

Erick Stattner Applications et Services WEB: Architecture REST 30 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

PrésentationRessourcesInterfaces et représentationsOutils

Architecture RESTOutils

Exemple de l’API Twitter

https://dev.twitter.com/rest

Erick Stattner Applications et Services WEB: Architecture REST 31 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

Outline

1 Services WEB

2 Architecture REST

3 JavaEE et JAX-RSJavaEEFramework Jersey

4 Bibliographie

Erick Stattner Applications et Services WEB: Architecture REST 32 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSJavaEE

En JavaEE

web.xml

Servlet

Comment utiliser ces notions pour mettre en place des services Web REST ?

Erick Stattner Applications et Services WEB: Architecture REST 33 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

Coté client

Difficulté: Comment modifier la méthode HTTP?

Habitués à deux types de méthodes ?

Rappel PHP

Exemple PHP:I <form action="..." method="POST ou GET">

...< /form>

Problème: impossible d’appeler PUT ou DELETE avec navigateurhabituel

Pas de procédure standard en HTML classique

Erick Stattner Applications et Services WEB: Architecture REST 34 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSJavaEE

Coté clientDeux solutions:

1 Inventer une convention pour représenter PUT et DELETEPassage de paramètresEx. /livre/SF/parrypotter/2/?action=maj ou suppAjout dans l’urlEx. /maj/livre/SF/parrypotter/2Ex. /supp/livre/SF/parrypotter/2

2 Utiliser une API capable de modifier, de façon transparente, les méthodesHTTP

JAX-RS: Jersey, RestLet, Spring, etc.

Erick Stattner Applications et Services WEB: Architecture REST 35 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

JAX-RS:

JAX-RS: Java API for RESTful Web Servicesfournit un support pour la création de services WEB avec unearchitecture REST

Il est définit dans la JSR 311 (Java Specification Requests)http://goo.gl/sg1g6k

JAX-RS introduit un système de d’annotations pour la création deservices

Plusieurs implémentations:I JerseyI RESTEasyI RestletI ...

Erick Stattner Applications et Services WEB: Architecture REST 36 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

Jersey

Implémentation de référence de JAX-RS

Framework open-source développé par Oracle

Ensemble de fonctions pour implémenter des services WEB REST avecJavaEE

Au niveau ServeurI Fournit une implémentation de Servlet qui parcourt automatiquement les

classes pour identifier les ressourcesI Elle doit être définie dans le web.xml

Au niveau ClientI Fournit une API pour communiquer avec un service

Erick Stattner Applications et Services WEB: Architecture REST 37 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

JerseyMise en place du service s’effectue en deux étapes

1 Implémenter les classes qui répondent aux requêtes à l’aide desannotations

2 Définir le Jersey Servlet Dispatcher

Erick Stattner Applications et Services WEB: Architecture REST 38 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

1) AnnotationsJAX-RS repose sur un système d’annotations

I @PATH(your-path): Définit le chemin à partir de l’URL de base (i.e. celledéfinie dans le web.xml)

I @GET: Indique que la méthode qui suit traite les requêtes avec laméthode GET

I @POST: Idem pour méthode POSTI @PUT: Idem pour méthode PUTI @DELETE: Idem pour méthode DELETEI @Produces: Définit le type de représentation produit par la méthodeI @Consumes: Définit le type de représentation accepté par la méthodeI @PathParam: Utiliser pour récupérer paramètres dans l’URL

Attention

Il en existe bcp d’autres: @queryparam, @provider, ...Qqs exemples d’utilisation ici: http://goo.gl/MoRz3e

Erick Stattner Applications et Services WEB: Architecture REST 39 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

1) Annotations: Exemple @GET et @Produces

Précise le type de représentation produite par le serveur

Erick Stattner Applications et Services WEB: Architecture REST 40 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

1) Annotations: Exemple @PATHPrécise l’URI de la ressource

Exemple de templates d’URI

Erick Stattner Applications et Services WEB: Architecture REST 41 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

1) Annotations: Exemple @PathParam

Pour la récupération de paramètre dans l’URL

Erick Stattner Applications et Services WEB: Architecture REST 42 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEEFramework Jersey

JavaEE et JAX-RSFramework Jersey

2) Jersey Servlet Dispatcher

Initialisée dans le fichier web.xml

Parcourt les classes d’un package pour identifier les ressources

Le paramètre com.sun.jersey.config.property.package définit dansquel package le dispatcher doit rechercher les classes

Erick Stattner Applications et Services WEB: Architecture REST 43 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEE et JAX-RSBibliographie

WEB Services:

SOAP vs REST: Choisir la bonne architecture web servicehttp://goo.gl/MrRfCw

Comprendre le style d’architecture RESThttp://goo.gl/MKtKBp

Comment j’ai expliqué REST à ma femmehttp://goo.gl/o1o2dc

Apprendre REST - un style d’architecture du Webhttp://goo.gl/30gJir

Pour ne plus être en REST, comprendre cette architecturehttp://goo.gl/M3lSvg

L’architecture orientée ressource pour faire des services web RESTfulhttp://goo.gl/kZ7qpB

Erick Stattner Applications et Services WEB: Architecture REST 44 / 45

Services WEBArchitecture RESTJavaEE et JAX-RS

Bibliographie

JavaEE et JAX-RSBibliographie

Sur l’utilisation de JAX-RS:

Building RESTful Web Services with JAX-RShttp://goo.gl/WVFhfp

REST with Java (JAX-RS) using Jersey - Tutorialhttp://goo.gl/dK4iM

JAX-RS: REST coté serveur avec JAVAhttp://goo.gl/X8uOZ

Developper des services web REST avec JAVA: JAX-RShttp://goo.gl/4Tzgh8

JAX-RS, le spécification Java pour implémenter les services RESThttp://goo.gl/7Y24Ul

Building a RESTful Web Service with Spring Frameworkhttp://goo.gl/LdfyjL

RESTful Web Service - JAX-RS Annotationshttp://goo.gl/MoRz3e

Erick Stattner Applications et Services WEB: Architecture REST 45 / 45