在SpringBoot控制器类中,我的API通常返回一个带有主体和状态代码的ResponseEntity,但我显然可以通过用@ResponseBody
注解我的控制器方法来省去ResponseEntity,如下所示:
@Controller
public class DemoController
{
@Autowired
StudentService studentService;
@GetMapping("/student")
@ResponseBody
Student getStudent(@RequestParam id) {
return studentService.getStudent(id);
}
}
如果我的服务抛出了一个异常,我可以通过抛出一个ResponseStatusException
来返回一个自定义的HTTP状态,但是不清楚如何指定一个有效响应的HTTP状态。我该如何指定它?或者它如何决定使用什么?
2条答案
按热度按时间w8ntj3qf1#
如果您使用
@ResponseBody
注解,控制器方法的传回型别会当做回应主体使用。如果控制器方法成功完成,HTTP状态码会预设为200(OK),如果掷回例外状况,则预设为500(Internal Server Error)。您可以掷回具有所需状态码的
ResponseStatusException
,以指定自订HTTP状态码。例如:wpx232ag2#
处理它的更好方法可能是您的自定义ExceptionHandler:
阅读更多信息:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc