首页 > 解决方案 > 当 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");
    }
}

标签: javarestspring-boot

解决方案


返回

return new ResponseEntity<>(HttpStatus.NO_CONTENT);

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


推荐阅读