web-dev-qa-db-fra.com

Modifier la réponse d'erreur JSON par défaut de Spring Boot Rest Controller

Actuellement, la réponse d'erreur de Spring Boot contient le contenu standard comme ci-dessous:

{
   "timestamp" : 1426615606,
   "exception" : "org.springframework.web.bind.MissingServletRequestParameterException",
   "status" : 400,
   "error" : "Bad Request",
   "path" : "/welcome",
   "message" : "Required String parameter 'name' is not present"
}

Je cherche un moyen de me débarrasser de la propriété "exception" dans la réponse. Existe-t-il un moyen d'y parvenir?

31
Marco

Comme décrit dans la documentation sur la gestion des erreurs , vous pouvez fournir votre propre bean qui implémente ErrorAttributes pour prendre le contrôle du contenu.

Un moyen simple de le faire est de sous-classer DefaultErrorAttributes. Par exemple:

@Bean
public ErrorAttributes errorAttributes() {
    return new DefaultErrorAttributes() {
        @Override
        public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) {
            Map<String, Object> errorAttributes = super.getErrorAttributes(requestAttributes, includeStackTrace);
            // Customize the default entries in errorAttributes to suit your needs
            return errorAttributes;
        }

   };
}
44
Andy Wilkinson