【发布时间】:2021-11-26 11:41:11
【问题描述】:
我有一个接收 HTTP 请求的微服务 (Java+Spring Boot),然后我通过 HTTP 调用另一个服务的 REST API 调用。被调用的服务返回 HTTP 状态 201(无响应体),但我需要返回 HTTP 200 和响应体。
我正在使用 WebClient 调用其他服务,对于 201 状态,我正在使用 bodyToMono(Void.class)。
那么如何为我的微服务客户端返回 HTTP 200 响应正文?最佳做法是什么?另外如何为调用返回 HTTP 201 的外部服务的服务编写组件测试?
更新:当前代码如下:
webClient.builder())
.post()
.uri("/employee")
.body(Mono.just(employee), Employee.class)
.retrieve()
.onStatus(status -> status.equals(HttpStatus.NOT_FOUND), response -> Mono.just(new NotFoundException("404 occurred", HttpStatus.NOT_FOUND.name())))
.bodyToMono(Void.class)
.block();
谢谢
【问题讨论】:
-
请分享您的代码。
-
` webClient.builder()) .post() .uri("/employee") .body(Mono.just(employee), Employee.class) .retrieve() .onStatus(status - > status.equals(HttpStatus.NOT_FOUND),响应 -> Mono.just(new NotFoundException("404 发生",HttpStatus.NOT_FOUND.name()))) .bodyToMono(Void.class) .block(); `
-
请不要在反应式堆栈中使用
.block(),除非您有充分的理由。 -
@JoãoDias,正确
-
请不要在 cmets 中编写代码,您会看到它完全不可读。编辑您的问题以包含代码。
标签: spring-boot spring-webflux spring-webclient