Как объединить Flux и ResponseEntity в контроллерах Spring WebfluxJAVA

Программисты JAVA общаются здесь
Anonymous
Как объединить Flux и ResponseEntity в контроллерах Spring Webflux

Сообщение Anonymous »

Я использую Mono с ResponseEntity в своих контроллерах Webflux, чтобы манипулировать заголовками и другой информацией ответа. Например:

Код: Выделить всё

@GetMapping("/{userId}")
fun getOneUser(@PathVariable userId: UserId): Mono {
return repository.findById(userId)
.map(User::asDto)
.map { ResponseEntity.ok(it) }
.defaultIfEmpty(ResponseEntity.notFound().build())
}

@GetMapping
fun getAllUsers(): Flux {
return repository.findAllActive().map(User::asDto)
}
оба работают нормально, но бывают случаи, когда требуется также наличие ResponseEntity в сочетании с Flux. Каким должен быть тип ответа? Правильно ли использовать ResponseEntity?

Например:

Код: Выделить всё

@GetMapping("/{userId}/options")
fun getAllUserOptions(@PathVariable userId: UserId): ??? {
return repository.findById(userId)
.flatMapIterable{ it.options }
.map { OptionDto.from(it) }
// if findById -> empty Mono then:
//   return ResponseEntity.notFound().build() ?
// else:
//   return the result of `.map { OptionDto.from(it) }` ?
}
Я хотел бы добиться здесь того, чтобы getAllUserOptions возвращал 404, если хранилище.findById(userId) является пустым Mono

code>, в противном случае верните user.options как Flux.

Обновление:
здесь репозиторий ReactiveCrudRepository

Подробнее здесь: https://stackoverflow.com/questions/524 ... ontrollers

Вернуться в «JAVA»