2010-05-17 2 views
1

Je recherche un modèle de conception pour gérer les exceptions générées par le service Web.Gestion des exceptions de service Web - recherche d'alternatives à SOAP

J'ai regardé les exemples SOAP et ce n'est pas adapté à mon projet.

Je fais les appels aux services Web via AJAX. Si l'appel échoue ou que la logique métier n'est pas respectée, j'aimerais passer un objet personnalisé au navigateur qui contiendra des informations sur l'exception. Le navigateur va regarder les informations d'exception à travers le script java et le gérer. Est-ce une chose raisonnable à faire ou devrais-je chercher des alternatives?

La seule chose que j'ai réussi à trouver jusqu'à présent est SOAP.

Merci

Répondre

0

Utiliser les codes d'état de réponse HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Il existe une plage de codes de réponse 4xx-5xx, conçue pour gérer les messages d'erreur. Il gère la couche http, vous devez donc vous mettre d'accord sur l'utilisation de codes spécifiques pour des types d'erreurs spécifiques. Voir http://distilledme.wordpress.com/2010/12/22/http-status-codes-quick-reference/ pour voir comment les codes d'erreur http peuvent être appliqués à l'application REST.

En général, vous utiliserez probablement beaucoup 500 code de réponse, avec charge utile indiquant une erreur spécifique au niveau de l'application. Si vous voulez utiliser AJAX, vous pouvez incorporer le contenu dans l'objet JSON, qui a eu lieu les informations d'erreur au niveau de l'application, i.e. .:

// normal response 
    {'status': 'ok', 
    'error': null, 
    'response': some_response} 

    // error response (with 500 http code) 
    { 'status': 'error', 
    'error_msg': 'you should enter your name', 
    'error': 'UserInputError'} 

sur côté client, vous désérialiser JSON, vérifiez élément « statut ». Si elle est égale à 'error', prenez la valeur 'error' et voyez quelle est l'erreur spécifique (la valeur doit être convenue côté serveur et côté client) et, si nécessaire, ajoutez une description de l'erreur dans 'error_msg'. Si 'error' est nul, vous prenez l'objet 'response' et le traitez plus loin. Si vous utilisez un framework JavaScript, regardez comment vous pouvez ajouter des fonctions de rappel pour gérer les réponses serveur erronées (autre que 2xx) de manière uniforme dans les wrappers AJAX requester (par exemple, dans JQuery vous pouvez ajouter des gestionnaires globaux à AJAX événements, de sorte que vous définissez une fois, et utilisez à chaque fois: http://docs.jquery.com/Ajax_Events)