我有一个控制器,当存储库返回的列表中不存在任何元素时,该控制器应返回204-No Content
。在Spring中,当我返回一个空列表时,响应状态为200-OK
。我找到了一种解决方法,将控制器设置为返回Response Entity
,但是还有另一种方法吗?我不想抛出异常,因为在我的用例中一个空列表是有意义的,并且不能使用@ResponseStatus
,因为在用例中该列表也可以包含元素,因此我需要返回{{ 1}}和列表。
我使用这种方法解决了,但是我想在控制器中返回200-OK
和List<Parcela>
204-No content
答案 0 :(得分:2)
有几种方法可以返回自定义HTTP状态代码:
引发异常,并在自定义异常上添加注释
__delete__
变得更有条理,并将同样的内容放入@ControllerAdvice
vars(obj)
像以前一样使用您的@ResponseEntity。
obj.__dict__
尽管对错误代码(4XX和5XX)使用异常更有意义。最初我也使用ResponseEntity,但是您可以看到自己的控制器变得多么混乱。
这可能是一个问题,但是我建议您创建“ EmptyListException”之类的“业务”异常,将其放入服务层,然后在单独的@ControllerAdvice中进行处理。这样,将更易于阅读和支持。
答案 1 :(得分:1)
返回
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
将返回204-No content
。这是正确的方法。对我也很好
答案 2 :(得分:1)
我研究了更多this,发现它更接近我要查找的内容,因此我无需检查列表是否为空即可返回