Services RestFul avec RestEasy

Avec le développement des Single Page Application, les développeurs Java EE ont de plus en plus besoin faire des Web services respectant les normes Rest. La spécification JAX-RS définit une norme d’implémentation de ces services en Java. RestEasy est une de ces implémentations tout comme CXF et Jersey. Je vais présenter ici une implémentation simple de ce type de service.

javaresteasy

Services RestFul

Les services REST respectent plusieurs normes. Ce sont des services qui n’ont pas d’état (Stateless), on ne peut pas stocker de session sur le serveur au niveau du service en lui-même mais plutôt en base ou sur le client. Les services REST HTTP ont quatre principales méthodes auxquelles correspondent des types de demandes clientes :

  • GET : pour récupérer une donnée, on peut utiliser l’URL pour passer l’identifiant de l’objet à récupérer.
  • POST : pour envoyer des données de sauvegarde au serveur.
  • PUT : pour envoyer une demande de modification d’une données, les données principales sont contenu en format POST, et l’identifiant de l’objet à modifier est passé dans l’URL.
  • DELETE : pour supprimer des données sur le serveur, l’identifiant de l’objet à supprimer est passé dans l’URL.

Application avec RestEasy

L’API RestEasy est présente sur le serveur d’application JBoss. Attention cependant à la version utilisée, ce tutoriel s’applique aux version 3.x de ReatEasy. Je n’ai pas testé avec les anciennes versions de l’API. Pour importer la version la plus récente, ajouter la dépendance Maven suivante dans votre pom.xml.

RestEasy permet de détecter tous les Web Services automatiquement à la mise en place d’une classe héritant de javax.ws.rs.core.Application. Il faut donc créer une classe RestInitializer héritant de cette classe et avec une annotation @ApplicationPath. Cette annotation va définir la racine des URLs de tous nos Web Services.

Dans les versions précédentes de RestEasy, des modifications sont nécessaires dans le web.xml. Ici, plus besoin, la classe ci-dessus va assurer une initialisation de toutes les classes annotées.

Une fois le paramétrage effectué, on peut mettre en place nos Web Services dans nos classes. Ci-dessous plusieurs exemples avec les différentes méthodes REST.

Détails

  • @Produces définit le type de retour que vont réaliser les méthodes de la classe. Cette annotation s’applique à la classe mais on peut également définir un type de retour pour chacune des méthodes. Plusieurs types de données sont disponibles : XML, JSON, PlainText.
  • @Path définit le chemin d’accès aux méthodes de cette classe, ou de la méthode correspondante. Ainsi, pour obtenir l’URL du service il faut prendre en compte dans cet ordre : l’ApplicationPath de l’Initializer, le Path de la classe et le Path de la méthode.
  • @GET, @POST, @PUT et @DELETE correspondent aux différentes méthodes HTTP qui sont exposables.
  • @PathParam va associer le paramètre passé dans l’URL de la requête et le paramètre de la méthode. La chaine de caractères de cette annotation doit être présente dans l’annotation Path de la méthode entre accolade: @Path(« /directory/{id} »).
  • @FormParam va associer le paramètre passé dans le POST de la requête et le paramètre de la méthode.
  • @Context HttpServletRequest request donne accès aux objets stockés en session comme par exemple l’identification de l’utilisateur.

 

spacer

Laisser un commentaire