Ich habe die folgende vereinfachte Handler-Funktion (Spring WebFlux und die funktionale API mit Kotlin). Ich brauche jedoch einen Hinweis, wie man ein leeres Flux erkennt und dann noContent() für 404 verwendet, wenn das Flux leer ist.WebFlux funktional: Wie erkennt man einen leeren Flux und kehrt 404 zurück?
fun findByLastname(request: ServerRequest): Mono<ServerResponse> {
val lastnameOpt = request.queryParam("lastname")
val customerFlux = if (lastnameOpt.isPresent) {
service.findByLastname(lastnameOpt.get())
} else {
service.findAll()
}
// How can I detect an empty Flux and then invoke noContent() ?
return ok().body(customerFlux, Customer::class.java)
}
die modifizierte Variante funktioniert auch nicht. 'customerFlux.collectList()' führt zu einem Mono, das eine leere Liste enthält, wenn der ursprüngliche Flux leer ist. Daher ist das Mono nicht leer (weil es eine leere Liste enthält) und ok() wird aufgerufen. –
Lösung gefunden. Innerhalb von 'flatMap()' wird eine if-Anweisung benötigt: 'if (l.isEmpty()) notFound() ... else ok() ...' Dann ist 'switchIfEmpty (...)' hier veraltet. –
Ah schön, danke! –