我正在使用Sping Boot 作为一个简单的REST API,如果出现故障,我希望返回正确的HTTP状态码。
@RequestMapping(value="/rawdata/", method = RequestMethod.PUT)
@ResponseBody
@ResponseStatus( HttpStatus.OK )
public RestModel create(@RequestBody String data) {
// code ommitted..
// how do i return a correct status code if something fails?
}
字符串
作为Spring和Sping Boot 的新手,基本的问题是,当某些东西正常或失败时,我如何返回不同的状态码?
7条答案
按热度按时间vshtjzan1#
有几个选项可以使用。相当好的方法是使用异常和类来处理称为
@ControllerAdvice
:字符串
你也可以将
HttpServletResponse
传递给控制器方法,然后设置响应代码:型
详情请参阅这篇伟大的博客文章:Exception Handling in Spring MVC
注意
在Spring MVC中使用
@ResponseBody
annotation是多余的-它已经包含在@RestController
annotation中。gjmwrych2#
其中一种方法是使用
ResponseEntity
作为返回对象:字符串
nnsrf1az3#
一个很好的方法是使用Spring的ResponseStatusException
而不是返回一个
ResponseEntity
或类似的,你只是从控制器抛出ResponseStatusException
与HttpStatus
和原因,例如:字符串
这将导致对客户端的响应包含HTTP状态:
型
注意:
HttpStatus
提供了多种不同的状态码,方便您使用。knpiaxh14#
如果你想返回一个自定义的状态码,你可以使用ResponseEntity如下:
字符串
CustomHttpStatusValue可以是标准HTTP状态代码之内或之外的任何整数。
b1zrtrql5#
试试这个代码:
字符串
uqxowvwt6#
返回状态码的方法有很多种,1:RestController类应该扩展BaseRest类,在BaseRest类中我们可以处理异常并返回预期的错误码。例如:
字符串
wn9m85ua7#
我认为最简单的方法是将方法的返回类型设置为
字符串
对于发送任何状态代码,只需添加return语句作为
型
例如,如果你想返回一个图书列表,
型