我最近将我们的项目升级到了Spring Boot2,这个App只是一个Rest API。现在,我们所有的400和500响应都以html而不是json的形式返回。
我正在定义一个自定义的ErrorAttributes,就像文档上说的那样。
@Configuration
public class WebConfig implements WebMvcConfigurer {
...
@Bean
public ErrorAttributes errorAttributes() {
return new DefaultErrorAttributes() {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest,
boolean includeStackTrace) {
Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, true);
return errorAttributes;
}
};
}
...
我想在本地调试这个问题,但我在代码中找不到Spring Boot决定为错误添加JSON响应的地方。这里的文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-error-handling说:
对于机器客户端,它会生成一个
响应,其中包含错误、HTTP状态和异常消息的详细信息。
我在想,我必须在本地定义一个Bean,这会导致在Spring Boot Auto configuration中不能正确地配置它。
发布于 2018-08-02 08:21:22
我终于想通了。我认为Spring Security4到Spring Security5中的一些变化导致了我们应用程序过滤器链早期的NPE。此外,随着Spring Boot升级,/error路由被强制进行身份验证,这使得调试问题变得更加困难。
我最终修复了NPE,允许每个人看到/error映射,然后确保ErrorMvcAutoConfiguration被正确初始化。现在一切都正常了。
https://stackoverflow.com/questions/51596762
复制相似问题