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

spring WebFlux:如何使用主体插入器在响应主体中发送mono

强宾白
2023-03-14

该文档说明:https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html

ServerResponse提供对HTTP响应的访问。由于ServerResponse是不可变的,因此使用构建器创建ServerResponse。生成器允许您设置响应状态、添加响应标头和提供正文。例如,以下是如何创建状态为200 OK的响应、一个JSON内容类型和一个正文:

Mono<Person> person = ...
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(person);

类似地,我很想将mono 传递给ServerReponse Builder的body方法,但是我得到了以下错误:

Mono<Inventory> inventoryMono=request.bodyToMono(Inventory.class);        
 return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(inventoryMono);

但是,它可以使用以下代码:

ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(inventoryMono.doOnNext(inventoryRepository::save).log(),Inventory.class)

我错过了什么?

共有1个答案

章建木
2023-03-14

您的情况可以根据文档进行解释。由于您试图返回mono(它继承自publisher类),因此必须将该类指定为body方法中的第二个参数,如下所示。

.body(inventoryMono,inventory.class)

在第二个代码片段中,将inventory.class作为第二个参数,这就是它工作的原因。只需将其添加到第一个代码段中

 类似资料:
  • 问题内容: 这是我的控制器内部的方法,其注释为 我期望作为我的json。 这是我的JUnit测试: 这是控制台输出: Even 是一个空字符串。 有人可以建议如何在我的JUnit测试方法中获取JSON,以便完成测试用例。 问题答案: 我使用TestNG进行单元测试。但是在Spring Test Framework中,它们看起来都很相似。所以我相信你的测试如下 如果要检查json键和值,可以使用js

  • 应用主体是管理 Yii 应用系统整体结构和生命周期的对象。 每个 Yii 应用系统只能包含一个应用主体,应用主体在 入口脚本 中创建并能通过表达式 \Yii::$app 全局范围内访问。 信息: 当我们说“一个应用”,它可能是一个应用主体对象,也可能是一个应用系统, 是根据上下文来决定[译:中文为避免歧义,Application 翻译为应用主体]。 Yii有两种应用主体: 网页应用主体 和 控制台

  • 问题内容: 我需要执行一个没有长度的八位字节流的api。它只是实时数据流。我遇到的问题是,当我发出请求时,似乎试图在将信息读入输入流之前先等待内容的结尾,但是它没有看到内容的结尾和NoHttpResponse异常的超时。以下是我的代码的简化版本: 问题答案: 编辑2 因此,如果您对线程/可运行程序/处理程序不满意,而对Android AsyncTask不满意,我将直接转到HttpUrlConnec

  • 问题内容: 反向代理是可行的。如何获得响应主体? 问题答案: 有一个领域。您可以使用它来修改响应。例如: 整个场景的操场示例:http : //play.golang.org/p/b0S5CbCMrI。

  • 问题内容: 我有简单的集成测试 在最后一行中,我想将响应正文中收到的字符串与预期字符串进行比较 作为回应,我得到: 使用content(),body()尝试了一些技巧,但没有任何效果。 问题答案: @Sotirios Delimanolis回答完成了这项工作,但是我一直在寻找在此模拟Mvc断言中比较字符串的方法 所以这是 当然,我的主张失败了: 因为: 因此,这证明它有效!

  • 问题内容: 我有一个带有页眉和页脚的HTML表: 我正在尝试添加以下内容: 但该行已添加到该部分中。 我该如何插入? 问题答案: 如果您想在中添加行,请获取对其的引用,然后在其中添加。 工作演示在这里。另外,您可以在此处查看文档。