DefaultErrorAttributes

DefaultErrorAttributes

如何更改引发ResponseStatusException时公开的错误属性?

特别是我想在json中隐藏exceptionerrorstatus类型,但仅在生产期间隐藏。

    @RestController
    public class MyController {
       @GetMapping("/test")
       public Object get() {
          throw new org.springframework.web.server.ResponseStatusException(
                 HttpStatus.Forbidden, "some message");
       }
    }

结果:
{
    "timestamp": "2018-11-06T12:16:50.111+0000",
    "status": 403,
    "error": "Forbidden",
    "exception": "org.springframework.web.server.ResponseStatusException",
    "message": "some message",
    "path": "/test"
}

最佳答案

使用DefaultErrorAttributes进行配置public DefaultErrorAttributes(boolean includeException)
创建一个新的DefaultErrorAttributes实例。
参数:
includeException-是否包含“exception”属性

注意默认是不带

public DefaultErrorAttributes()

创建一个不包含“exception”属性的新的DefaultErrorAttributes实例。

参见example of customizing error

10-05 23:40