我使用 Spring MVC 4(或 Spring-Boot)编写了简单的 rest 应用程序。在控制器内,我返回 ResponseEntity
。但在某些情况下,我想给出成功 JSON,如果有验证错误,我想给出错误 JSON。目前成功和错误响应完全不同,所以我为错误和成功创建了 2 个类。如果内部逻辑没问题,我想在控制器内返回 ResponseEntity<Success>
。否则我想返回 ResponseEntity<Error>
。有没有办法做到这一点。
Success
和 Error
是我用来表示成功和错误响应的 2 个类。
原文由 Saveendra Ekanayake 发布,翻译遵循 CC BY-SA 4.0 许可协议
我推荐使用 Spring 的
@ControllerAdvice
来处理错误。阅读 本指南 以获得良好的介绍,从名为“Spring Boot 错误处理”的部分开始。如需深入讨论,请参阅 Spring.io 博客中 的一篇文章,该文章于 2018 年 4 月更新。关于其工作原理的简要总结:
ResponseEntity<Success>
。它不负责返回错误或异常响应。@ControllerAdvice
注释@ExceptionHandler
注释的方法ResponseEntity<Error>
使用这种方法,您只需在一个地方为 API 中的所有端点实现控制器异常处理。它还使您的 API 可以轻松地在所有端点上拥有统一的异常响应结构。这简化了客户的异常处理。