web-dev-qa-db-ja.com

Spring Boot Rest ControllerからのデフォルトのJSONエラー応答を変更する

現在、スプリングブートからのエラー応答には、次のような標準コンテンツが含まれています。

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

応答の「例外」プロパティを削除する方法を探しています。これを達成する方法はありますか?

31
Marco

エラー処理に関するドキュメント で説明されているように、コンテンツを制御するためにErrorAttributesを実装する独自のBeanを提供できます。

これを行う簡単な方法は、DefaultErrorAttributesをサブクラス化することです。例えば:

@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