Как объединить 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение