在WebFlux中的第一步,我有几个RestController类,它们公开GET API以通过ID从服务器检索资源,例如:
@GetMapping("{id}")
public Mono<Customer> findById( @PathVariable int id )
{
return Mono.justOrEmpty( service.getById( id ) );
}
假设在找不到请求的ID的情况下,service.getById()返回NULL,如何将其转换为带有一些自定义消息的HTTP代码404?
答案 0 :(得分:1)
一种方法是将客户包装在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));
}