当前位置: 首页 > 知识库问答 >
问题:

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

罗俭
2023-03-14

我有一个接收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个答案

喻元龙
2023-03-14

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

           WebClient
            .builder()
            .build()
            .post()
            .uri("/employee")
            .exchange()
            .flatMap(response -> {
                return response
                        .mutate()
                        .body("success")
                        .build()
                        .bodyToMono(String.class);
            });
 类似资料:
  • 我想在Spring Boot Controller方法中返回一条没有@ResponseBody注释的纯文本消息。 通常,当我返回一个字符串时,会出现一个错误。(实际上,它会查找html文件。) 当我使用此代码时,这将返回一个错误 错误解决模板[这是一个纯文本],模板可能不存在或可能无法访问任何配置的模板解析程序org.thymeleaf.exceptions.TemplateInputExc001

  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一

  • 我得到错误:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL服务器的安全连接。错误:“SQL服务器没有返回响应。连接已关闭。” Hibernate配置: application.properties: pom.xml: SQLServerException: openssl客户端连接服务器:1

  • 我使用改型来连接数据库,但GSON似乎没有解析数据。正在返回JSON,但没有创建响应体,因此我无法与数据交互。有什么想法吗? 我的URL添加 okhttp日志

  • 通过Eureka服务器注册/发现Spring Boot微服务,试用Spring Cloud Gateway。该设置运行良好,客户端可以通过网关调用发现的服务,没有问题,这是很好的。 现在,我试图测试一个场景,其中客户机调用服务(通过网关),目前没有可用的实例来为该调用提供服务(即服务关闭)。当我们测试这个场景时,默认行为是客户机得到一个500的内部服务器错误响应。最简单的方法是什么来改变这个默认行

  • 我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?