Deux solutions sont présentés ici :
Dans les exemples ci-dessous on utilise le flux produit par l'URL en /users qui renvoie une liste de User
<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")
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) :
<h:form> <p:dataList var="user" value="#{welcomeController.restUsers}"> #{user.displayName}" </p:dataList> </h:form> |
Voyons le code Java du contrôleur :
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
Dans cet example, on récupère un utilisateur à partir de son ID.
//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); |