在反应式弹簧启动控制器中,给出以下方法(kotlin)
fun rows(): ResponseEntity<Flux<ResultRow>> {
val elements: Flux<ResultRow> = service.fetchRows() // not shown
return ResponseEntity
.ok()
.header(
ResultRowPagination.NEXT_PAGE_HEADER, "value")
)
.body(elements)
}
如果通量为空(A)或包含少于10个项目(B),是否可以完全不设置ResultRowPagination.NEXT_PAGE_HEADER
?
答案 0 :(得分:1)
如果您希望将Flux的大小与10进行比较,则应从Flux收集列表。
也许这可以帮助您:
Mono<ResponseEntity<List<ResultRow>>> rows() {
Flux<ResultRow> elements = ...;
return elements
.collectList()
.map(resultRows -> prepareHeaders(resultRows)
.body(resultRows))
.switchIfEmpty(Mono.just(ResponseEntity.ok()
.build()));
}
ResponseEntity.BodyBuilder prepareHeaders(List<ResultRow> resultRows) {
if (resultRows.isEmpty() || resultRows.size() < 10)
return ResponseEntity.ok();
return ResponseEntity.ok()
.header(ResultRowPagination.NEXT_PAGE_HEADER, "value");
}