休息前

通过参考资料开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程

1.介绍

在Spring MVC中,我们有很多方法设置HTTP响应的状态码

在这个简短的教程中,我们将看到最直接的方法:使用@ResponseStatus注释。

2.在控制器方法

当端点成功返回时,Spring提供一个HTTP 200 (OK)响应。

如果我们想指定控制器方法的响应状态,我们可以用@ResponseStatus。对于期望的响应状态,它有两个可互换的参数:代码,价值。例如,我们可以表示服务器拒绝煮咖啡,因为它是一个茶壶:

@ResponseStatus(HttpStatus.I_AM_A_TEAPOT) void teaPot() {}

当我们想要发出错误信号时,我们可以通过原因论点:

@ResponseStatus (HttpStatus。BAD_REQUEST, reason = "一些参数是无效的")void onIllegalArgumentException(IllegalArgumentException exception) {}

注意,当我们设置原因,春天HttpServletResponse.sendError ()。因此,它将发送一个HTML错误页面发送给客户端,这使得它不适合REST端点

还要注意,Spring只用于@ResponseStatus,当标记的方法成功完成(没有抛出异常)。

3.与错误处理程序

我们有三种方法@ResponseStatus将一个异常到HTTP响应状态:

  • 使用@ExceptionHandler
  • 使用@ControllerAdvice
  • 标志着异常

为了使用前两个解决方案,我们必须定义一个错误处理程序方法。你可以阅读更多关于这个主题金宝搏官网188be这篇文章

我们可以使用@ResponseStatus使用这些错误处理程序方法就像我们使用常规MVC方法一样在前一节中。

当我们不需要动态错误响应时,最直接的解决方案是第三种:用标记异常类@ResponseStatus:

@ResponseStatus(代码= HttpStatus.BAD_REQUEST)类CustomException扩展RuntimeException {}

当春天捕捉到这些异常,它使用我们提供的设置@ResponseStatus

注意,当我们标记an异常@ResponseStatus,春天总是在呼唤HttpServletResponse.sendError (),我们是否设置原因与否。

还要注意,Spring对子类使用相同的配置,除非我们用@ResponseStatus,太。

4.结论

在本文中,我们看到了如何使用@ResponseStatus设置不同场景下的HTTP响应代码,包括错误处理。

像往常一样,示例是可用的在GitHub

休息下

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程
本文评论关闭!