Java 如何验证/处理Spring WebClient响应?

Java 如何验证/处理Spring WebClient响应?,java,spring,spring-boot,reactive-programming,Java,Spring,Spring Boot,Reactive Programming,因此,应用程序流程如下所示: Spring应用程序收到请求->{“id”:“UUID”} 使用WebClient调用外部web服务 验证步骤2中从WebClient收到的响应。如果验证通过,则返回true或false 执行其他验证操作(通过调用其他进程或ext服务)并将响应发送回用户 这是我正在使用的webclient(副本): public调用(字符串名){ 返回此.webClient.get().url(“/{id}/details”,name) .retrieve().BodyToNo(D

因此,应用程序流程如下所示:

  • Spring应用程序收到请求->{“id”:“UUID”}
  • 使用WebClient调用外部web服务
  • 验证步骤2中从WebClient收到的响应。如果验证通过,则返回true或false
  • 执行其他验证操作(通过调用其他进程或ext服务)并将响应发送回用户
  • 这是我正在使用的webclient(副本):

    public调用(字符串名){
    返回此.webClient.get().url(“/{id}/details”,name)
    .retrieve().BodyToNo(Details.class);
    }
    
    现在我不想通过控制器将这个Mono对象直接返回到客户端(比如Angular应用程序),因为这是一个中间步骤。我想对从WebClient收到的响应运行一些验证

    我尝试了
    .block()
    方法来检索函数,但根据反应式编程,这似乎是一种不好的做法。(阻塞操作) 此外,我无法理解如何使用
    .subscribe()
    方法检索响应对象,并对其运行验证/检查,如果验证通过,则返回
    True

    简单来说,我想返回一个普通的布尔值/Java对象,而不是从模块/验证代码返回一个Mono对象


    我是反应式编程新手,有人能帮我解决这个问题吗?

    没有。您想在检索后返回一个
    Mono
    ,调用
    map
    ,执行逻辑并返回一个
    Mono
    @m-deinum。您能提供一个相同的代码示例吗。我尝试了。地图的东西,但得到了一个错误。你尝试了什么,把它添加到你的问题。让它工作,但仍然有一个疑问,希望你能帮助我解决这个问题。我应该如何在不阻塞线程的情况下查看Mono并检查内容以做出一些决定?使用
    map
    。什么决定,你需要做什么?它会影响结果吗?
    public Mono<Details> someRestCall(String name) {
            return this.webClient.get().url("/{id}/details", name)
                            .retrieve().bodyToMono(Details.class);
        }