Titre de la page

De $1

Version de 22:32, 4 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Client HTML5 Web Service RESTFull [Suite]

Dans le TP d'aujourd'hui, nous allons raffiner à la fois l'application cliente et le services web.  Jusqu'à présent la plupart de nos méthodes ne renvoient pas de réponse à l'application cliente, nous n'avons pas gérer les exceptions et traiter les erreurs.  Dans un premier temps, nous allons définir un format standard de réponse pour les requetes clientes et appliquer ce format aux réponses renvoyées au client.

  1. Le format de toutes les réponses doit ressembler à 
  1. {
  2. "status":true,
  3. "message":"Liste des catégories",
  4. "data":[{
  5. "id":1,
  6. "nom":"Mathématiques",
  7. "description":"Description"
  8. }]
  9. }

Dans cet exemple,

Status indique au client le statut de la réponse; true indique que tout s'est bien passé et false indique qu'une erreur s'est produite.  N.B: On ne peut pas forrcément se baser sur le statut de la réponse HTTP car une requête HTTP peut bien aboutir sans pour autant que la demande du client soit compatible avec la logique de votre application.  Exemple: la liste des catégories est vide.  

Message : est le message associé au statut.  Par example si le status est false (la liste est vide); ce message peut etre "Il n'y a pas de catégories définies". 

Data : renferme les données envoyées au client. 

Pour ce faire, nous allons créer une classe générique avec trois attributs (boolean status, String message, T data). T permet de définir un objet de type générique. 

public class Message <T> {

    public boolean status;

    public String message;

    public T data;

}
Modifiez la signature de la méthode list de la classe CategorieRessource pour renvoyer un objet de type Message au lieu d'une liste de catégories. 
  • status=true; Si la liste est non vide  
  • status=false; Si la liste est vide 
  • message sera défini en fonction du statut de la liste (ou éventuellement des erreurs) 
  • data contiendra les données de la réponse

Modifiez maintenant l'application cliente pour prendre en compte cette nouvelle représentation de données. Pour cela, vous allez devoir modifier la méthode getData de categorie.js (si vous l'aviez pas changé bien sur)

var getData = function() {
    $.ajax({
        url: "http://localhost:8080/bibliotheque_ntdp/webresources/category",
                type: "GET",
        headers: {
            Accept: "application/json"
        }
    }).success(function(data, status, jq) {
   //Cette fonction indique à knockout d'appliquer les données aux éléments de la page 
    //Elle est toujours appelée quand les données sont pretes et est appelée qu'une fois 
    if(data.status)    
     ko.applyBindings(new ViewModel(data.data));
    else{
        alert(data.message)
        }
    }).error(function(jq, status, error) {
        $(".error").text(JSON.stringify(status + " " + error));

    });
};

Répétez les étapes précédentes pour toutes les actions du Web Service et adaptez vos interfaces en conséquence.