我正在使用Postman向我的Spring应用程序发送POST请求。请求有一个JSON主体,如下所示:
{
"documents": [
{
"id": "1",
"text": "Piece of text 1",
"lang": "en"
},
{
"id": "2",
"text": "Piece of text 2",
"lang": "en"
}
],
"domain": "hr",
"text_key": "text"
}
我有一个方法来处理这些POST请求,我需要能够从请求主体中提取上述JSON数据而不会阻塞。我现在的方法看起来像这样:
public void requestBody(ServerRequest request) {
Mono<String> bodyData = request.bodyToMono(String.class);
System.out.println("\nsubscribing to the Mono.....");
bodyData.subscribeOn(Schedulers.newParallel("requestBody")).subscribe(value -> {
log.debug(String.format("%n value consumed: %s" ,value));
});
}
然而,这没有任何作用。我尝试使用ServerRequest查看Spring中的答案,并从Spring ServerRequest中获取字符串体,但没有成功。请帮忙。
更新#1
谢谢https://stackoverflow.com/users/1189885/chrylis-cautiouslyoptimistic
根据你的回答,这就是我正在努力的:
request.bodyToMono(String.class).map(
(String rqBody) -> {
setRequestBody(rqBody);
return ServerResponse.status(HttpStatus.CREATED).contentType(APPLICATION_JSON).body(rqBody, Object.class);
}
);
setRequestBody()
正在将一个全局字符串变量设置为请求正文。这样地:
public void setRequestBody (String rqBody){
System.out.println("\nset request body called with: " + rqBody);
request_body=rqBody;
}
但是,全局请求_body变量仍然为空。
更新#2
根据你最近的评论,这就是我想做的:
RedissonClient redisson = Redisson.create();
RBucket<Object> bucket = redisson.getBucket("requestKey");
request.bodyToMono(String.class).doOnNext(
(String rqBody) -> {
bucket.set(rqBody);
}
);
当我进入Redis-cli并尝试获取请求密钥时,它会给我零代码
你不能;这就是反应模型的全部含义。相反,您通常应该使用诸如map
(通过应用函数修改值)或doOnNext
(执行某些操作但不返回结果)之类的操作。
如果使用反应式执行模型,如Spring WebFlux,则直接返回Mono
我目前有两个表格:劳动力和员工。劳动力表是所有提交简历加入公司的潜在员工的集合。Employees表是Workforce表中实际雇用的人员的集合。 环境:1。Eclipse 2。Java(J2EE)3。Maven 4。Spring5。JPA(JpaRepository) 为简洁起见,我将坚持使用与数据提取和数据插入另一个表有关的文件。 由于两个表的相似性,Workforce表中的许多字段将与Emp
我有一个对象列表(文件夹)。该列表中的每个对象A都有一个对象B(合作伙伴)列表,对象B也有一个对象C(人员)列表。对象C包含一个属性代码,我想用它来使用Java8进行过滤。 我试过下面的代码,但它似乎不工作: 你们知道我如何使用FlatMap从
我正在使用一个spring boot api,它可以接收非常大的对象,并尝试将其保存在MongoDB数据库中。因此,程序有时会抛出下一个错误: 我读到MongoDB只允许16MB以下大小的对象,这对我的系统非常不方便,因为一个对象可以很容易地超过这个差距。为了解决这个问题,我读过GridFS,一种允许超过16MB文件差距的技术。 现在,我试图在系统中实现GridFS,但我只看到了使用文件保存在数据
下面是演示类 我有一个演示实例: 对于新的,我需要从Demo了解字段,因为我需要一种通用的方法来获得任何具有基本字段/简单字段的类的对象数组
我试图从ECB货币XML对象中提取交换值。这里有http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml 我可以毫无问题地加载对象,然后打印出所有数据。然而,我无法从该对象获取特定数据。 这是print_r的输出 SimpleXMLElement对象([Cube]= 例如,我如何从美元中获得汇率的值?阅读此线程后,我如何访问数组/对象
我得到错误:“com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:Expected BEGIN_OBJECT但是BEGIN_ARRAY位于第1行column 283 path$.items.Promended[0].images” 我请求帮助从json对象提取数据。 我只需要删除类'images',并将'urls'