[英]How to Send multiple POST request through Java Spring Webflux
I have a json file of an array with objects. 我有一个包含对象的数组的json文件。 I would like to iterate through each object and send a post request with the body inside.
我想遍历每个对象,并在内部发送一个发帖请求。 My issue or question is trying to iterate through the @RequestBody for each object in the array and call the createObj method.
我的问题是尝试遍历数组中每个对象的@RequestBody并调用createObj方法。
I pasting the json into Postman to test it I already have a createObject like so but it works for a Mono not multiple 我将json粘贴到Postman中进行测试,我已经有一个createObject,但是它适用于Mono而不是multiple
I tried iterating it like so 我试图像这样迭代
@PostMapping(path = "multicreate", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Flux<Hospital> createMultipleHospital(@RequestBody Flux<Hospital> hospital) {
hospital.collectList().flatMap(x -> {
return hospitalService.createHospital((Mono<Hospital>) x);
});
return null;
}
// Should loop and send 2 POST request.
[
{
"name": "Miami Cancer Institute",
"address": "8900 North Kendall Drive",
"phone": "786-596-2000",
"zipcode": "33176",
"city": "Miami",
"state": "FL"
},
{
"name": "Mercy Hospital",
"address": "3663 S Miami Ave",
"phone": "305-854-4400",
"zipcode": "33133",
"city": "Miami",
"state": "FL"
}
]
Controller 调节器
@PostMapping(path = "", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Mono<Hospital> createHospital(@RequestBody Mono<Hospital> hospital) {
System.out.println(hospital);
return hospitalService.createHospital(hospital);
}
Service/Repository 服务/资源库
@Override
public Mono<Hospital> createHospital(Mono<Hospital> hospitalMono) {
return hospitalMono.flatMap(hosp -> {
try {
return reactiveMongoOperations.save(
hosp.createLatCord(hosp));
} catch (InterruptedException | ApiException | IOException e) {
e.printStackTrace();
}
return Mono.just(hosp);
});
}
Solved it after i just switched method return type and parameter from MONO to FLUX and worked. 我刚刚将方法返回类型和参数从MONO切换为FLUX并工作后解决了。
@Override
public Flux<Hospital> createHospital(Flux<Hospital> hospitalMono) {
return hospitalMono.flatMap(hosp -> {
try {
return reactiveMongoOperations.save(
hosp.createLatCord(hosp));
} catch (InterruptedException | ApiException | IOException e) {
e.printStackTrace();
}
return Mono.just(hosp);
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.