提问者:小点点

Spring Webflux:当被调用的服务返回HTTP 201而没有WebClient的正文时,如何返回带有正文的HTTP 200响应?


我有一个接收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();

谢啦


共1个答案

匿名用户

如果我理解你的问题。我想这样解决。

           WebClient
            .builder()
            .build()
            .post()
            .uri("/employee")
            .exchange()
            .flatMap(response -> {
                return response
                        .mutate()
                        .body("success")
                        .build()
                        .bodyToMono(String.class);
            });