当前位置: 首页 > 知识库问答 >
问题:

@RestControllerAdvice与@ControllerAdvice

程飞星
2023-03-14
  • @RestControllerAdvice和@ControllerAdvice之间的主要区别是什么?
  • 我们是否应该始终使用@RestControllerAdvice进行Rest服务和@ControllerAdvice MVC

共有3个答案

时宾实
2023-03-14

异常:一个好的REST API应该正确地处理异常,并向用户发送正确的响应。不应向用户呈现任何未处理的异常。REST API开发人员有两个与错误处理相关的需求。

  1. 错误处理的常见位置
  2. 类似的错误响应主体,带有跨API的正确HTTP状态代码

@RestControllerAdvice是@ControllerAvice和@ResponseBody的组合

@控件建议注释首次在Spring 3.2中引入。

我们可以使用@ControllerAdvice注释来处理RESTful服务中的异常,但我们需要单独添加@ResponseBy

注意:
GlobalExceptionHandler 用 @ControllerAdvice 进行了注释,因此它将拦截来自整个应用程序中控制器的异常。

华项明
2023-03-14

另外,我们可以只理解为:

< code > @ rest Controller = < code > @ Controller < code > @ response body

@RestControlllerAdvie=@ControlllerAdvie@响应体

请记住,< code > @ RestControllerAdvice 是使用RestfulApi处理异常的更方便的注释。

操作系统用法示例:

@RestControllerAdvice
public class WebRestControllerAdvice {
  
  @ExceptionHandler(CustomNotFoundException.class)
  public ResponseMsg handleNotFoundException(CustomNotFoundException ex) {
    ResponseMsg responseMsg = new ResponseMsg(ex.getMessage());
    return responseMsg;
  }
}

在这种情况下,任何异常instanceOf CustomNotFoundException都将在响应正文中抛出。

此处提取的示例:https://grokonez.com/spring-framework/spring-mvc/use-restcontrolleradvice-new-features-spring-framework-4-3

彭洲
2023-03-14

@RestControllerAdvice只是@ControllerAdvice@ResponseBody的句法糖,你可以看看这里。

我们是否应该始终使用@RestControllerAdvice进行rest服务和@ControllerAvice MVC?

同样,如上所述,< code>@ControllerAdvice甚至也可以用于REST web服务,但是您需要另外使用< code>@ResponseBody。

 类似资料:
  • 这是我在我的项目中使用的一个库依赖项: 我对在项目中使用感兴趣。该类是一个,用于处理所有异常。 然而,我不太明白如何将这个建议激活到我的项目中。

  • 我在中有以下方法: 而是:

  • 我使用的是SpringBoot2.3。我遇到了一些例外情况。我想使用类在全局级别捕获异常。我能够捕获验证错误并返回自定义错误响应,但Spring似乎忽略了我的方法。这是我的课程: andler.java 下面是我抛出异常的方法: PhotoStorageServiceImp.java PhotoUploadController.java } 我在检索照片时遇到错误

  • 我正在使用Spring Boot for Restful Web Services。 试图建立一个依赖@RestControllerAdvice的全局自定义异常处理机制,该机制可以处理已知但未知的异常。 pom.xml GlobalControlllerExceptionHandler: 响应: 这个问题是当我使用第三方库做某事时,未知异常可能是404,但返回为500! 例如,使用具有未知索引的E

  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。