Spring WebFlux - единственный способ справиться с 404? - PullRequest
0 голосов
/ 07 октября 2018

Делая мои первые шаги в WebFlux, у меня есть несколько классов RestController, которые предоставляют GET API для получения ресурса по идентификатору с сервера, например:

@GetMapping("{id}")
public Mono<Customer> findById( @PathVariable int id )
{
    return Mono.justOrEmpty( service.getById( id ) );
}

Предполагая, что service.getById () возвращает NULLв случае, если запрошенный идентификатор не найден, как мне преобразовать его в код HTTP 404 с каким-либо пользовательским сообщением?

1 Ответ

0 голосов
/ 08 октября 2018

Один из подходов заключается в том, чтобы заключить клиента в ResponseEntity, я предполагаю, что ваша служба возвращает Mono .. если не заключить в Mono.fromCallable(() -> service.getById())

e.g. 
    @GetMapping("/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
    public Mono<ResponseEnity<?>> findById( @PathVariable int id )
    {
        return service.getById(id)
                .map(customer -> ResponseEntity.ok(customer))
                .switchIfEmpty(Mono.just(new ResponseEntity<>("{\"content\":\"false\"}", HttpStatus.NOT_FOUND));
    }
...