WebService 01
WebService 01
WebService 01
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
Exemple:
http://www.geoplugin.net/javascript.gp?base_currency=TND
Qu’est ce qu’un Web Service ?
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é
6
Pourquoi les Web Services?
7
REST Fournisseurs
REST Statistiques
10
RESTfulWeb Services
11
Méthode GET
GET: http://monsite.com/bookstore/books/1
Statut : 200
Message : OK
Client En-tête : …. Serveur
Représentation : XML, JSON, html,…
POST: http://monsite.com/bookstore/books
Corps de la requête
Représentation : XML, JSON, html,…
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
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
• Création de service:
• Principe:
Construire des ressources HTTP simple et stateless
A tout moment, pour un service donné, on connait les ressources
disponibles
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(){
}
Déploiement et appel
<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
25
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
27
Lesannotations
@GET @Path(”appel”)
@Produces("text/html")
public String getResp(){
…
http://localhost:8080/WebApplication2/webressources/generic/appel
Lesannotations
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) {
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) {
Appel:
http://localhost:8080/WebApplication2/webressources/generic/appel/texte-bonjour-detail-textecourt
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