Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Struts 2
  3. Les services REST avec Struts 2
Extrait - Struts 2 Développez votre application web moderne avec Java
Extraits du livre
Struts 2 Développez votre application web moderne avec Java Revenir à la page d'achat du livre

Les services REST avec Struts 2

Principe

REST signifie Representational State Transfer (ou transfert d’état de représentation, en français). Les services REST sont les services web les plus utilisés à l’heure actuelle pour le transfert de données et la communication entre applications. Ils reposent sur une architecture bien définie et un ensemble de normes à mettre en œuvre.

On parle de service Rest, d’API Rest (Application Programming Interface) ou de service Restful pour désigner ce protocole de communication.

1. Protocole HTTP

Les API REST s’appuient sur le protocole HTTP pour transférer les données, le plus souvent au format JSON (JavaScript Object Notation). L’architecture REST est une architecture simple, rapide, flexible et robuste..

Images/07ET01.png

2. Conventions

a. L’URI comme identifiant des ressources

REST s’appuie sur les URI (Uniform Resource Identifier) pour identifier une ressource. Dans l’application, il faudra donc construire les URI (et donc les URL) en considérant les contraintes REST. :

Voici quelques exemples de construction d’URL avec RESTful :

  • La liste des clients correspond à l’URL http://www.devisprobtp.com/clients. Par contre, l’URL http://www.devisprobtp.com/client n’est pas conforme.

  • L’URL correspondant au tri des clients est http://www.devisprobtp.com/clients?tri=asc. Par contre, l’URL http://www.devisprobtp.com/clients/tri/asc n’est pas conforme.

  • L’URL qui correspond à l’affichage d’un client donné est http://www.devisprobtp.com/clients/6. Par contre, l’URL http://www.devisprobtp.com/client/display/6 n’est pas conforme.

b. Les verbes HTTP identifiant des opérations

Une règle inhérente à l’architecture REST (Representational State Transfer) est d’utiliser les verbes HTTP existants. Ainsi, il y a quatre opérations...

Implémenter un CRUD

1. Introduction

Nous allons créer un nouveau projet Maven dans lequel nous allons implémenter les services REST relatifs à la gestion d’un client tels que la création, l’affichage, la mise à jour et la suppression.

 Pour cela, allez sous Eclipse, File - New Project - Maven Project - Next, puis cochez la case Create a simple project et cliquez sur Next.

Images/07ET02.PNG

 Saisissez com.apidevispro dans Group Id, apidevispro dans Artifact Id et sélectionnez war dans Packaging. Cliquez sur Finish.

Le projet est créé sous Eclipse :

Images/07ET03.PNG

2. Mise en œuvre

a. Les fichiers de configuration Struts

 Sous \src\main\webapp, créez le répertoire WEB-INF puis le fichier web.xml. Copiez le contenu ci-dessous dans le fichier web.xml nouvellement créé :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns="http://java.sun.com/xml/ns/javaee"  
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" 
version="3.0"> 
  <display-name>apidevispro</display-name> 
  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list> 
  <filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter 
.StrutsPrepareAndExecuteFilter</filter-class> 
  </filter> 
  <filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> ...

Sécurité des services

Les API REST permettent à différentes applications d’échanger des données, de communiquer ensemble. Il devient alors primordial que tous ces échanges de données soient sécurisés et donc de se pencher sur la sécurité de son API REST.

1. Utiliser HTTPS

Une des premières choses à faire pour sécuriser une API REST est d’utiliser le protocole HTTPS afin de chiffrer les données transmises et reçues, ce qui bloque leur lecture.

2. Ajouter une authentification

Pour sécuriser la consommation de services REST, il est primordial d’introduire une authentification :

  • Il est possible d’utiliser la méthode Basic de l’authentification HTTPS (basic auth), en fournissant un identifiant et un mot de passe pour s’authentifier. Cela est envisageable si, par exemple, l’API est utilisée par un seul partenaire. Si ce n’est pas le cas, ce n’est pas suffisamment sécurisé.

3. Utiliser une clé d’API

Une API key permet la mise à disposition de ressources publiques avec une traçabilité, sans avoir à mettre en place une authentification. Il faut donc préciser cette clé pour pouvoir accéder, aux services REST. Par exemple, nous pourrions avoir l’URL suivante :

GET /v1/clients?api_key=abcdef12345 

4. Utiliser OAuth2

L’une des méthodes d’authentification la mieux adaptée aux API REST et très répandue est OAuth2.

OAuth2 permet de mettre en place une délégation d’autorisation pour l’accès à une application tierce (client application) avec un accès limité sur une ressource (ressource server), avec le consentement de son propriétaire (ressource owner).

Voici, ci-dessous, un schéma qui récapitule...

Performance

1. Tester le bon fonctionnement de l’API REST

Pour vérifier le bon fonctionnement des différents services web, il est intéressant d’utiliser des outils performants comme Postman ou, un équivalent, Insomnia.

Postman est un outil open source qui permet de tester le bon fonctionnement des services web.

Nous allons installer Postman afin de tester les services REST que nous avons précédemment implémentés :

 Allez sur le site officiel de l’éditeur https://www.postman.com/downloads/ afin de télécharger l’exécutable.

 Lancez l’exécutable téléchargé.

 Cliquez sur Skip and go to the app en bas.

Images/07ET10.PNG

L’application se lance :

Images/07ET11.PNG

Nous allons configurer les requêtes HTTP :

 Pour cela, cliquez à droite sur Create a request.

La page suivante s’affiche :

Images/07ET12.PNG

Nous allons tester le service REST qui permet de lister, d’afficher tous les clients. Pour cela :

 Dans la liste déroulante, sélectionnez GET.

 Puis, saisissez l’URL http://localhost:8080/apidevispro/v1/clients/

 Cliquez à droite sur le bouton Send.

Dans l’onglet Body, on obtient le fichier JSON en réponse à notre requête. Ce fichier contient toutes les informations relatives aux clients :

[ 
    { 
        "artisanId": "1", 
        "clientId": "1", 
        "adresse": "10 rue des fleurs 31400 TOULOUSE", 
        "telephone": "0523451278", 
        "nom": "DUPUIS", ...