【问题标题】:How to Send multiple POST request through Java Spring Webflux如何通过 Java Spring Webflux 发送多个 POST 请求
【发布时间】:2019-12-20 13:28:31
【问题描述】:

我有一个包含对象的数组的 json 文件。我想遍历每个对象并发送一个带有正文的发布请求。我的问题或疑问是尝试遍历数组中每个对象的 @RequestBody 并调用 createObj 方法。

我将 json 粘贴到 Postman 中进行测试 我已经有一个像这样的 createObject 但它适用于 Mono 而不是多个

我试着像这样迭代它

@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"
   }
]

控制器

@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);
}

服务/存储库

@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);
        });
}

【问题讨论】:

    标签: java spring spring-boot http spring-webflux


    【解决方案1】:

    在我刚刚将方法返回类型和参数从 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);
            });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2017-10-09
      • 1970-01-01
      • 2015-12-09
      • 2011-06-10
      相关资源
      最近更新 更多