【发布时间】:2021-10-28 16:12:08
【问题描述】:
我对在我的 RestAPI Spring 应用程序中使用 Optionals 来设计存储库 -> 服务 -> 控制器通信的方式有点困惑。 例如,客户想通过 id 查找电影,但电影不存在并且存储库返回空 Optional。我有两种处理方式:
-
Service 方法返回 Optional 值或抛出异常,可以在 Controller 中使用 ControllerAdvice 处理。
-
Service 返回 Optional,Controller 处理它(返回值,如果存在或处理异常,或者只是做其他事情)。
我知道在这种简单的情况下使用异常并不是最佳实践,您可能会建议其他方法让客户知道 id 是错误的。
目前 RestController 中的方法:
@GetMapping("/{id}")
public FilmGetDto getFilm(@PathVariable int id) {
return filmService.getFilm(id);
}
【问题讨论】: