Printemps de Démarrage RESTE du service de la gestion des exceptions

Je suis en train de mettre en place une grande échelle des services REST serveur. Nous sommes à l'aide de Spring Boot 1.2.1 Printemps 4.1.5, et Java 8. Nos contrôleurs sont la mise en œuvre de @RestController et le standard @RequestMapping annotations.

Mon problème est que le Printemps de Démarrage met en place une redirection par défaut pour le contrôleur des exceptions à /error. À partir de la documentation:

Printemps Boot donne une erreur de mappage par défaut qui gère toutes les erreurs d'une manière sensible, et il est enregistré en tant que "global" page d'erreur dans le conteneur de servlet.

À venir à partir des années à écrire des applications REST avec Node.js, c'est, pour moi, rien, mais sensible. Toute exception à un point de terminaison de service génère devrait revenir dans la réponse. Je ne comprends pas pourquoi vous souhaitez envoyer une redirection vers ce qui est le plus probable Angulaire ou JQuery SPA consommateur, qui est seulement à la recherche d'une réponse et qui ne peuvent pas ou ne veulent pas prendre des mesures sur une redirection.

Ce que je veux faire est d'installer un gestionnaire d'erreurs globales qui peut prendre n'importe quelle exception - soit délibérément jeté d'une demande de la méthode de cartographie ou de l'auto-généré par un Ressort (erreur 404 si aucun gestionnaire méthode est trouvée pour le chemin de la requête de signature), et revenir à un format standard la réponse d'erreur (400, 500, 503, 404) pour le client, sans MVC redirections. Plus précisément, nous allons prendre de l'erreur, connectez-vous à NoSQL avec un UUID, puis retour au client un droit code d'erreur HTTP avec l'UUID de l'entrée de journal dans le JSON corps.

Les docs ont été vague sur la façon de le faire. Il me semble que vous devez soit créer votre propre ErrorController mise en œuvre ou l'utilisation ControllerAdvice d'une certaine façon, mais tous les exemples que j'ai vu encore comprendre la transmission de la réponse à un certain genre d'erreur de cartographie, ce qui n'aide pas. Autres exemples suggèrent que vous auriez à la liste de chaque type d'Exception vous souhaitez gérer au lieu de simplement l'inscription "Lancer" et de tout.

Quelqu'un peut me dire ce que j'ai raté, ou me diriger dans la bonne direction sur la façon de le faire sans ce qui suggère la chaîne Node.js serait plus facile de traiter avec?

  • Le client n'est jamais réellement envoyé une redirection. La redirection est géré en interne par le conteneur de servlet (ex: Tomcat).
  • Retrait de la @ResponseStatus annotations sur mes gestionnaires d'exception était ce dont j'avais besoin; voir stackoverflow.com/questions/35563968/...
InformationsquelleAutor ogradyjd | 2015-03-06