【问题标题】:How to set at Spring Boot all Errors to json?如何在 Spring Boot 中将所有错误设置为 json?
【发布时间】:2019-02-08 12:30:51
【问题描述】:

Spring Boot 是否有可能的配置,它以 json 格式返回所有错误?

比如404,或者401。需要把这个404页面只替换成json。

非常感谢

【问题讨论】:

  • 您的意思是休息呼叫的错误响应或..?请详细说明您的问题。
  • @Gimhani 是的,它有一个休息调用,它在我的方法之前结束,然后它抛出 HTML 格式的错误,是否有 json 格式的配置?
  • 这是您面临的问题吗?stackoverflow.com/questions/50602291/…
  • 可以添加接收响应的代码段吗?
  • @Gimhani 不,如果您调用不存在的资源,则没有代码

标签: spring spring-boot


【解决方案1】:

这是因为默认情况下,springboot 将错误生成为 html。 要获取 Json 输出,请按如下方式添加 producer 参数,以便返回的内容确定为 json 格式。

@RequestMapping(....., produces = "application/json")

【讨论】:

【解决方案2】:

您可以自定义错误控制器来处理它:

@RestController
public class CustomErrorController extends BasicErrorController {
private final Logger logger = LoggerFactory.getLogger(CustomErrorController.class);

public CustomErrorController(ErrorAttributes errorAttributes) {
    super(errorAttributes, new ErrorProperties());
}

// let all MediaType return json data
@RequestMapping(consumes = MediaType.ALL_VALUE)
public ResponseEntity<Map<String, Object>> allError(HttpServletRequest request, HttpServletResponse response) {
    return super.error(request);
}
}

【讨论】:

    【解决方案3】:

    您的意思是使用 @ControllerAdvice 并将内容标头设置为 application/json

    【讨论】:

    • 不,抱歉不是我的控制器,spring boot 的默认映射
    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多