WebService 01

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 32

Les Web Services

Utilisation du web aujourd’hui

2 2
1
2
2
1 Serveur d’applications

1
1
2
2
1
2 2
Serveur d’applications

Demande de ressources

Resources
Utilisation du web aujourd’hui

Les ressources sont récupérées aux travers d’URL (s)

Exemple:
http://www.geoplugin.net/javascript.gp?base_currency=TND
Qu’est ce qu’un Web Service ?

• Service web = instance d’objet, ressource déployée sur Internet


• Permettent à des applications (web, mobile, etc.) de faire appel à des
fonctionnalités (via des objets) sur un réseau local ou Internet

• Evolution des systèmes distribués, architecture SOA (architecture orientée


service)
• Technologie initiée par IBM et Microsoft, puis normalisée par le W3C

• Un service web = composant développé dans n’importe quel langage sur


n’importe quelle plateforme.
• Il doit pouvoir être invoqué par n’importe quel autre service
Pourquoi les Web Services?

Auparavant, utilisation des RMI, Corba,…


=>utilisation de démons (services) particuliers

• Avec les web services, utilisation de serveurs web quelque soit la


plateforme les messages passent par le protocole HTTP

• Le fait d’utiliser les serveurs web sur ports ouverts (80,8080,…)


permet aux services web d’être accessibles facilement (pas de
problème de pare-feu)

5
Pourquoi les Web Services?

Utilisation d’HTTP:
 Protocole Internet
 Beaucoup d’entreprises possèdent un serveur web
 Protocole généralement autorisé au niveau de pare-feu
 Protocole disponible sur toutes les plateformes
 Mode non connecté

Requètes/réponses des services doivent être sérialisées pour réutilisation


 XML
 JSON
 autre (pas recommandé)

6
Pourquoi les Web Services?

Principalement 2 types d’architectures de services


• Services SOAP (Simple Object Access Protocol) = protocole basé sur
XML

• Services REST(Representational State Transfer )=> transfert sur HTTP

 Utilisation d’HTTP, sérialisation des données


 Appel direct via http
 Stateless

 Utilisation des méthode HTTP: PUT,GET, etc

 De base, pas de protocole de sécurité, pas de norme particulière


 Mais plus simple

7
REST  Fournisseurs
REST  Statistiques

Statistique d’utilisation des services web REST et SOAP chez AMAZON


RESTfulWeb Services

• Appel de ressources (Web) via une URL contenant un nom de


méthode et des paramètres
 URL peut avoir une grammaire complexe

 Utilisation d’une méthode HTTP qui décrit de façon brève la sémantique


de l’appel
• Les architectures RESTful sont construites à partir de ressources
uniquement identifiées par des URI(s)

10
RESTfulWeb Services

• Une ressource peut subir quatre opérations de bases CRUD


correspondant aux quatre principaux types de requêtes HTTP (GET,
PUT, POST, DELETE)
• REST s’appuie sur le protocole HTTP pour effectuer ces opérations sur
les objets
 CREATE  POST
 RETRIEVE  GET
 UPDATE  PUT
 DELETE  DELETE

11
Méthode GET

• La méthode GET renvoie une représentation de la ressource tel


qu’elle est sur le système

GET: http://monsite.com/bookstore/books/1

Statut : 200
Message : OK
Client En-tête : …. Serveur
Représentation : XML, JSON, html,…

Status codes in HTTP:


https://www.w3.org/Protocols/HTTP/HTRESP.html
Méthode POST

• La méthode POST crée une nouvelle ressource sur le système

POST: http://monsite.com/bookstore/books
Corps de la requête
Représentation : XML, JSON, html,…

Client Statut : 201, 204 Serveur


Message : Create, No content
En-tête : …..
Méthode DELETE

• Supprime la ressource identifiée par l’URI sur le serveur


Identifiant de la
ressource sur le
serveur
DELETE: http://monsite.com/bookstore/books/1

Client Statut : 200 Serveur


Message : OK
En-tête : …..
Méthode PUT

• Mise à jour de la ressource sur le système


Identifiant de la
ressource sur le
serveur
PUT: http://monsite.com/bookstore/books/1
En-tête : …..
Corps de la requête : XML, JSON,…

Client Statut : 200 Serveur


Message : OK
En-tête : …..
Services Web SOAP VS REST

<?xml version="1.0" encoding="UTF-8"?>


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:hello xmlns:ns2="http://services.monsite.com/">
<name>Master Cloud</name>
</ns2:hello>
</S:Body>
</S:Envelope>

SOAP
Client Serveur

http://localhost:8080/Monsite/webresources/category/Master%20Cloud

REST
Client Serveur
Services Web SOAP VS REST

SOAP
Avantages
 Standardisé
 Interopérabilité
 Sécurité (WS-Security)
Inconvénients
 Performances (enveloppe SOAP supplémentaire)
 Complexité, lourdeur
 Cible l’appel de service
Services Web SOAP VS REST

REST
Avantages
 Simplicité de mise en œuvre
 Lisibilité par un humain
 Evolutivité
 Repose sur les principes du web
 Représentations multiples (XML, JSON,…)
Inconvénients
 Sécurité restreinte par l’emploi des méthodes HTTP
 Cible l’appel de ressources
Introduction aux Services WebREST

• Implémentation d’une API en Java = JAX-RS (Java API for RESTful Web
Services) qui est intégrée à Java EE>6

• Décrite par les spécifications JSR 311 et JSR 339

• Plusieurs frameworks basés sur JAX-RS :


 RESTEasy, CXF, Jersey (oracle)
 Jersey 2 choisi dans ce cours (http://jersey.java.net/)

• Possibilité d’utiliser Axis 2(Apache)


 http://axis.apache.org/axis2/java/core/docs/rest-ws.html

19
Introduction aux Services Web REST

• JSR 339

• Description
 des annotations à utiliser dans le code
 Du cycle de vie (via servlets)
 Des exceptions
 De la partie cliente
 Des URI
 Etc.

20
Architecture

Jersey => Développement basé sur l’implantation de POJO (Plain Old Java
Object), annotés et sur des requêtes HTTP

POJO POJO
HTTP servl
Client
et JAX-RS

Env. Java : ex: tomcat


Dans une application Web
Description du service
Fichier.WADL
REpresentational State Transfer (REST)

• Création de service:

• Principe:
 Construire des ressources HTTP simple et stateless
 A tout moment, pour un service donné, on connait les ressources
disponibles

• Création par approche Bottom/UP uniquement


• Création POJO+annotations
• Compilation et déploiement

22
Services Web RESTavec Jersey

Chemin du service
vu comme uneressource
@Path("generic")
public class GenericResource{ Type de requêteHTTP

@GET
@Produces("text/html") Type MIME deretour
public String getResp(){

return "<html><body>Bonjour Master Cloud </body></html";


//TODO return proper representationobject
// throw new UnsupportedOperationException();
Exception éventuelle

}
Déploiement et appel

 Déploiement en décrivant le service comme une Servlet (dans web.xml


pour tomcat/Glassfish)

<servlet>
<servlet-name>EssaisServlet</servlet-name>
<servlet-class>bdtest.EssaisServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>EssaisServlet</servlet-name>
<url-pattern>/EssaisServlet</url-pattern>

</servlet-mapping>

=> les IDE tels que Netbeans ou Eclipse le font pour vous
Déploiement et appel

• Appel avec méthode GET:

25
Lesannotations

 Choix de la méthode HTTP


 Définition des paramètres
 Définition des types de retour
 Sérialisation

 Définis par des annotations dans le code


Lesannotations

 Annotation @path:
 Classe java représentant un service RESTdoit être annotée par
 @path => définit une ressource Racine (root)
 Path décrit une expression URI permettant d’appeler le service
 Ex: http://localhost:8080/WebApplication2/webresources/generic

Contexte de l’application Web Contexte service

27
Lesannotations

Sub ressource @Path


Possibilité d’annoter les méthodes de la classe également
url final = concaténation uri classe + uri méthode

@GET @Path(”appel”)
@Produces("text/html")
public String getResp(){

http://localhost:8080/WebApplication2/webressources/generic/appel
Lesannotations

@Path peut également être complexe et donner des


paramètres (appelées Template Parameters)

Distinction d’une expression par les balises {}


@GET @Path(”appel/{texte}”)
@Produces("text/html")
public String getResp(@PathParam(”texte") String t) {

http://localhost:8080/WebApplication2/webressources/generic/appel/Bonjour
Lesannotations

 Code de méthode :
@GET@Path("appel/{texte}")
@Produces("text/html")
public String getOb(@PathParam("texte") String texte) {

return "<html><body>test<br>"+texte+ "\n</body></html>";


//TODO return proper representation object
// throw new UnsupportedOperationException();
}

 Appel:
http://localhost:8080/WebApplication2/webressources/generic/appel/Bonjour

La zone texte
Exemple de méthode GETavec retour text/HTML

 Code de méthode :
@GET
@Path("appel/texte-{texte}-detail-{det}")
@Produces("text/html")
public String getOb(@PathParam("texte") String t,
@PathParam("det") String d) {

return "<html><body>"+t+"<br>"+d+ "\n</body></html>";


//TODO return proper representation object
// throw new UnsupportedOperationException();
}

Appel:

http://localhost:8080/WebApplication2/webressources/generic/appel/texte-bonjour-detail-textecourt

zone texte1 zone texte2


@HEAD, @Get, @Post, @Put, @Delete

 Méthodes du services doivent être annotées par une méthode http pour traitement

 Avec JAX-RS, il est possible d’utiliser @GET pour supprimer une ressource mais
 Ne respecte pasREST
 Manque de sens?
 Généralement description de méthodes CRUD (create, read, update, delete)
 @POST->creation ressource
 @GET->lecture
 @PUT->mise à jour
 @DELETE-> suppression de la ressource

Vous aimerez peut-être aussi