Кинь исключение весенней загрузки webflux - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь сделать условие, которое, если не выполнено, выдает исключение.Но я пытался разными способами и безуспешно.

Мой restcontroller:

@GetMapping(value = ["/{id}"])
    fun find(@PathVariable id: String): Mono<ResponseEntity<Mono<Person>>> {
        return ResponseEntity.ok().body(service.find(id)).toMono()
}

Мой сервис

override fun find(id: String): Mono<Person> {
        return repository.findById(id).doOnError { throw DataNotFound("Person not found")}
  }

Если я ввожу существующий идентификатор, он возвращает мнезарегистрированное лицоНо если я ввожу несуществующий идентификатор, вместо того, чтобы выдать исключение, он возвращает 200 с пустым телом.

Как мне решить эту проблему?Может ли кто-нибудь помочь?

1 Ответ

1 голос
/ 08 мая 2019

Попробуйте это:

@GetMapping(value = ["/{id}"])
fun find(@PathVariable id: String): Mono<ResponseEntity<?>> {
  service.find(id).map(person -> ResponseEntity.ok().body(person))
    .onErrorResume(DataNotFound.class, exception -> ResponseEntity.notFound())
}

fun find(id: String): Mono<Person> {
  repository.findById(id).onErrorMap(error -> new DataNotFound("Person not found"))
}

Возвращает ответ OK, если человек существует, и NOT_FOUND в противном случае.

...