title: Spring-Webflux: Extracting Object from Mono without block()
body: <p>I am new Spring Webflux. I am writing a simple api which call another api and returns response.
  The problem I have is my api takes diffrent type of request than the external api.I have to convert the incoming request to send to external api.I am using Mono to receive request for my api, but having trouble to convert to another object without block().</p>
  <p><strong>Input</strong></p>
  <p><strong>Router</strong></p>
  <pre><code>@Configuration
  @EnableWebFlux
  public class RouterConfig implements WebFluxConfigurer{
  
      @Bean
      public RouterFunction&lt;ServerResponse&gt; routes(UserHandler handler){
          
          return RouterFunctions
                  .route(POST(&quot;/rest/create&quot;),
                          handler::createUser);
      }
      
  } 
  </code></pre>
  <p><strong>Handler</strong></p>
  <pre><code>@Component
  public class UserHandler {
  
      private UserService service;
  
      public UserHandler(UserService service) {
      this.service = service;
      }
  
        
      public Mono&lt;ServerResponse&gt; saveUser(ServerRequest request) 
      {
      
          Mono&lt;User&gt; user = request.bodyToMono(User.class)
      
          /* currently I am using block to get User object */
      
           User user1 = user.block()
      
          /* convert user to person */
         
             Person p =getPersonFromUser(user);
      
         
      
          
      }
  </code></pre>
  <p><strong>Pojos</strong></p>
  <pre><code> class User
      {
        private String name;
        private String id;
        private String email;
         private String phone;    
      
      
      }
  
  
  
   class Person
      {
        private String email;
        /* Combination of id and name */
        private String accountNumber;
        private String phone;
      
      }
  </code></pre>
  <p>Is there a way I can convert the Mono to <strong>Person</strong> object without blocking?</p>