Comment retourner le code d'état http pour les exceptions dans des services rest
Dans mon application j'ai différentes couches, comme le reste de la couche, la couche de service de base de données et de la couche, en fonction de scénarios d'affaires, je suis trowing différentes exceptions métier de la couche de service.
Mais maintenant, je dois mettre les différentes HTTP codes comme 400, 403, 409, 412.. pour le REPOS des réponses.
Comment puis-je définir des différents codes d'état HTTP, basé sur différents scénarios?
Qui est le moyen le plus sûr comme: aspect, exception mappeur, ou......?
Car je peux le mettre en état HTTP seule fois dans le reste de la couche (
appelé ce ), Je ne suis pas en mesure de cartographier les différentes HTTP codes, car mon exception est à partir de la couche de service.
Mon exception de la classe ressemble à ceci:
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
public BusinessException(ErrorEnumeration error) {
}
public BusinessException(Exception e, ErrorEnumeration error) {
}
}
et l'exception sera levée à partir du service comme ceci:
throw new BusinessException(ErrorEnumeration.VALIDATION_FAILED);
S'il vous plaît aider en suggérant une solution
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les exceptions définies dans jax-rs ou vous pouvez utiliser vos propres exceptions. Poing attraper votre entreprise exceptions et de les convertir en de jax-rs versions. Par exemple, pour les 404, vous pouvez jeter
javax.ws.rs.NotFoundException.
Vous pouvez également écrire vos propres exceptions en les étendant à partir de
javax.ws.rs.ClientErrorException
Voici un exemple pour 409-Conflit statut d'exception
Mise à jour
Plus simple et réalisable façon est d'attraper votre entreprise exceptions et re-jeter avec jax-rs exceptions.
Si vous utilisez printemps, vous pouvez toujours attraper ces exceptions à l'aide de l'aop.
Mise à jour 2
Aussi il est préférable de définir une nouvelle exception au lieu de réutiliser la même exception avec un état différent de l'état. Vous pouvez définir un nouveau ValidationException qui s'étend de BusinessException comme ça.
En utilisant de cette façon, vous pouvez toujours gérer tous les BusinessException mais il est plus facile de les identifier ou de les mapper à Jax-rs exceptions.
businessException
exception. Ensuite, écrire un utilitaire qui génère des exceptions en fonction de votre énumération. Vous pouvez utiliser l'aop pour les attraper. De cette façon, vous ne devez pas écriretry...catch
consolidés. Mais vous avez besoin d'intégrer aop, si vous ne l'avez pas déjà