Spring Boot 2升级问题-错误页面始终返回HTML

时间:2018-07-30 14:53:33

标签: json rest spring-boot

我最近将我们的项目升级到了Spring Boot2。该应用程序只是一个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说:

  

对于计算机客户端,它会生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。

我想我必须在本地定义一个Bean,这导致无法在Spring Boot Auto配置中正确配置它。

1 个答案:

答案 0 :(得分:0)

我终于想通了。我认为Spring Security 4对Spring Security 5进行了一些更改,这在我们的应用程序的筛选链中引起了NPE。另外,调试问题的难度更大,因为在Spring Boot升级中,/ error路由被强制进行身份验证。

我最终修复了NPE,使每个人都可以看到/ error映射,然后确保ErrorMvcAutoConfiguration被正确初始化。现在一切正常。