IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Robusta Web Library : Simplifiez REST et Ajax


précédentsommairesuivant

V. Les Exceptions

V-A. Le Status Code d'une requête HTTP

Le protocole HTTP fournit une liste de codes déclinés en quatre catégories :

  • 2xx : succès de la requête ;
  • 3xx : redirection de la requête ;
  • 4xx : la requête envoyée pose problème ;
  • 5xx : le serveur a rencontré un problème, alors que la requête est sans doute valable.

Beaucoup de codes semblent obsolètes, cependant la panoplie des erreurs 4xx doit être pleinement utilisée afin de renseigner l'utilisateur sur les corrections qu'il peut apporter à sa requête.

Évitez simplement de toujours renvoyer 400 ou 500. Il est également possible de spécifier soi-même ses status codes si cela vous semble nécessaire, en utilisant par exemple la partie 550-580 pour exprimer les erreurs envisageables dans votre code.

V-B. Les Exceptions dans les Webs Services

Vous avez pu remarquer que mon code dans les fonctions du Web Service est toujours similaire :

 
Sélectionnez
@METHOD
@Produces("application/xml")    
    public Response function() {

        try {            
            //Appel vers les classes Business, qui lancent des exceptions            
            return classicSuccess();//ou return getResponse(xml) si du XML spécifique est produit

        } catch (Exception ex) {
        //Renvoi de l'erreur - Il est également intéressant de logger cette erreur
            return classicFailure(ex);
        }

    }
 
}

C'est la partie Business qui lance l'exception, la partie JAX-RS ne fait que mettre en forme. La fonction classicFailure() va donc chercher le meilleur message et code correspondant à l'exception lancée. Cela sera plus précis si vous avez lancé une RestException.

V-C. La classe RestException et ses dérivés

Les RestException sont des classes dérivant de Exception et ayant les méthodes :

 
Sélectionnez
public int getStatusCode();
public void setStatusCode(int statusCode);
public String getClassicResponse();
public String getClassicResponse(String message);

Les RestExceptions permettent donc d'automatiser la réponse.


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Nicolas Zozol. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.