Pages enfant
  • 3.12.3 Accéder au service REST exposé

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3

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
langjavascript
<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
langxml
<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);