当列表为空时,Spring Boot返回204 No-Content

时间:2018-08-08 17:40:11

标签: java rest spring-boot

我有一个控制器,当存储库返回的列表中不存在任何元素时,该控制器应返回204-No Content。在Spring中,当我返回一个空列表时,响应状态为200-OK。我找到了一种解决方法,将控制器设置为返回Response Entity,但是还有另一种方法吗?我不想抛出异常,因为在我的用例中一个空列表是有意义的,并且不能使用@ResponseStatus,因为在用例中该列表也可以包含元素,因此我需要返回{{ 1}}和列表。

我使用这种方法解决了,但是我想在控制器中返回200-OKList<Parcela>

204-No content

3 个答案:

答案 0 :(得分:2)

有几种方法可以返回自定义HTTP状态代码:

  1. 引发异常,并在自定义异常上添加注释

    __delete__
  2. 变得更有条理,并将同样的内容放入@ControllerAdvice

    vars(obj)
  3. 像以前一样使用您的@ResponseEntity。

    obj.__dict__

尽管对错误代码(4XX和5XX)使用异常更有意义。最初我也使用ResponseEntity,但是您可以看到自己的控制器变得多么混乱。

这可能是一个问题,但是我建议您创建“ EmptyListException”之类的“业务”异常,将其放入服务层,然后在单独的@ControllerAdvice中进行处理。这样,将更易于阅读和支持。

答案 1 :(得分:1)

返回

return new ResponseEntity<>(HttpStatus.NO_CONTENT);

将返回204-No content。这是正确的方法。对我也很好

答案 2 :(得分:1)

我研究了更多this,发现它更接近我要查找的内容,因此我无需检查列表是否为空即可返回