Introduction
Deux solutions sont présentés ici :
- Un accès en JQuery. Dans ce cas c'est du code javaScript sur le navigateur de l'utilisateur qui fait la requête REST.
- Dans ce cas c'est le code Java sur le serveur qui fait la requête REST.
- Un accès avec RestTemplate.
- Un accès avec le client Jersey
Dans les exemples ci-dessous on utilise le flux produit par l'URL en /users qui renvoie une liste de User
Accès JQuery
Bloc de code | ||
---|---|---|
| ||
<div id="users" /> <script> //<![CDATA[ (function($) { $(document).ready(function() { $.getJSON("#{welcomeController.restURL}", function(data) { var html = "<ul>"; $.each(data, function(i, item) { html += "<li>" + item.displayName + "</li>"; }); html += "</ul>"; $(html).appendTo("#users"); }); }); })(jQuery); //]]> </script> |
On positionne une balise <div id="users" /> qui sera destinataire des résultats.
La fonction JQuery getJSON() appel l'URL REST (dont la valeur nous est ici donnée par le contrôleur JSF). Lors de l'itération sur la liste on construit une liste html. Cette liste est ensuite insérer dans la balise <div> cible : $(html).appendTo("#users")
Accès RestTemplate
Dans la vue (JSF ici) on utilise un composant de type liste (au sens html du terme) qui fait appel au contrôleur pour obtenir une liste d'objets (au sens java du terme) :
Bloc de code | ||
---|---|---|
| ||
<h:form> <p:dataList var="user" value="#{welcomeController.restUsers}"> #{user.displayName}" </p:dataList> </h:form> |
Voyons le code Java du contrôleur :
Bloc de code |
---|
public List<User> getRestUsers() { RestTemplate template = new RestTemplate(); List<User> ret = template.getForObject(getRestURL(), List.class); return ret; } |
Ce cas est très simple. Pour avoir plus d'information sur l'utilisation de RestTemplate Cf. La documentation Spring sur RestTemplate
Accès Jersey Client
Dans cet example, on récupère un utilisateur à partir de son ID.
Bloc de code |
---|
//Initialisation du client ClientConfig clientConfig = new DefaultClientConfig(); Client client = Client.create(clientConfig); //Configurer l'authentification du client si le service REST l'exige client.addFilter(new HTTPBasicAuthFilter(adminUsername, adminPassword)); //Creation d'une instance WebResource WebResource webResource = client.resource(UriBuilder.fromUri(http://urlDeMonWebSErvice/racine).build()); // Récupérer un user à partir de son Id au format JSON ClientResponse response = webResource.path("user") .path(idDuUser) .type(MediaType.APPLICATION_JSON_TYPE) .accept(MediaType.APPLICATION_JSON_TYPE) .get(ClientResponse.class); //Transformation du JSON User myUser = response.getEntity(User.class); |