java - 当 List 为空时 Spring Boot 返回 204 No-Content
问题描述
204-No Content
我有一个控制器,当存储库返回的列表中不存在任何元素时,它应该返回。在 Spring 中,当我返回一个空列表时,响应状态为200-OK
. 我找到了一种方法来解决这个设置我的控制器返回 a Response Entity
,但是还有另一种方法吗?我不想抛出异常,因为我的用例中的空列表是有意义的,并且不能使用@ResponseStatus
,因为在用例中列表也可以包含元素,所以我需要返回200-OK
列表。
我使用这种方法解决了,但我想List<Parcela>
在我的控制器中返回 a 并204-No content
@GetMapping(path = "/contratos/{numeroContrato}/parcelas", params = "status")
ResponseEntity<List<Parcela>> filtrarParcelasPorStatus(@PathVariable String documento,
@PathVariable String numeroContrato, @RequestParam StatusParcela status) {
try {
List<Parcela> parcelasFiltradas = veiculosUsecase.filtrarParcelasPorStatus(documento, numeroContrato,
status);
if (parcelasFiltradas.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(parcelasFiltradas, HttpStatus.OK);
}
catch (ParcelasNaoEncontradasException e) {
throw new NotFoundException(
"Nao e possivel listar as parcelas porque nao foi encontrado o contrato para o numero de contrato e cliente informado",
"Nao e possivel listar as parcelas porque nao foi encontrado o contrato para o numero de contrato e cliente informado",
HttpStatus.NOT_FOUND.toString(), "External - Veiculos API");
}
}
解决方案
返回
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
将返回204-No content
。这是正确的做法。对我来说也很好
推荐阅读
- flutter - 在 Flutter/Dart 中:在 AppBar 中显示两行文本?
- drake - 在 Drake 中对力/扭矩传感器建模的问题
- reactjs - 具有更具体的 HTMLElement ref 的 Typescript/React ForwardRefExoticComponent 分配失败
- python - Python:将 tiff 转换为 numpy 数组仅给出 0 和 255 的值
- android - TalkBack 开启时 SeekBar 和 Slider 的步骤错误
- google-cloud-dataflow - IO绑定数据流流作业的自动缩放
- java - 我想使用java将dxf文件转换为shp文件
- angular - 以角度替换模块
- java - 一个特定的枚举可以有属性吗
- css - 该 margin:10+50 是如何工作的并且是有效的?