我想了解有关Rest API响应的以下案例的最佳实践。
第一个代码段
@GetMapping("/person/{id}")
public ResponseEntity<Person> postPersonDetails(@PathVariable("id) Long id) {
Person person = personService.getPersonById(id);
if (null == person) {
throw new ResourceNotFoundException().withMessage("PERSON_NOT_FOUND");
}
return new ResponseEntity<Person>(person, HttpStatus.OK);
}
第二段代码
@GetMapping("/person/{id}")
public ResponseEntity<Person> postPersonDetails(@PathVariable("id) Long id) {
Person person = personService.getPersonById(id);
if (null == person) {
return new ResponseEntity<Person>(null, HttpStatus.NotFound);
}
return new ResponseEntity<Person>(person, HttpStatus.OK);
}
问题是
哪个响应API用户(用户)错误消息更好?
抛出异常将错误消息保留在日志中。如果抛出异常更好,那我应该如何避免留下故意抛出异常的错误消息呢?
谢谢
答案 0 :(得分:0)
在第一个示例中,我将考虑一种改进的方法:抛出PersonNotFoundException
并添加一个异常处理程序,该异常处理程序将该特定异常转换为HTTP 404和有效负载中的适当错误消息。
例如:
@ExceptionHandler(PersonNotFoundException.class)
public ResponseEntity<Void> personNotFound()
{
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
这可将您的映射代码从异常到响应分开并可重复使用。