spring webflux switchiffempty返回不同的类型

ruoxqz4g  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(534)
  1. public Mono<ServerResponse> getMessage(ServerRequest request) {
  2. //this call returns Mono<ApiClientResponse>
  3. return apiClient.hystrixWrappedGetMessages(request.headers().asHttpHeaders(), request.queryParams())
  4. .switchIfEmpty(/* Here */)
  5. }

请原谅,代码有点不完整,当我遇到这个问题时,我正在重新构造它。要点是它在 switchIfEmpty() 调用时,编译器正在强制 Mono<ApiClientResponse> ,但是什么时候 hystrixWrappedGetMessages() 退货 Mono.empty() 我想退回204 Mono<ServerResponse> 例如,否则我想返回一个200。我怎样才能做到呢?
理想情况下,我可以在map调用中检查它是否是mono.empty(),但如果它是空的mono,它似乎不会进入map。考虑过使用可选的,但他们似乎不能很好地发挥monos。

gopyfrb3

gopyfrb31#

你应该能够 flatMap 你的React是否良好,如果 Mono#empty 返回 flatMap 将被忽略。

  1. public Mono<ServerResponse> getMessage(ServerRequest request) {
  2. return apiClient.hystrixWrappedGetMessages(request.headers().asHttpHeaders(), request.queryParams())
  3. .flatMap(response -> {
  4. // Do your processing here
  5. return ServerResponse.ok().body( .... );
  6. }.switchIfEmpty(ServerResponse.noContent());
  7. }

相关问题