springboot webflux 參數傳遞(表單序列化)


springboot webflux  參數傳遞(表單序列化)

 

表單序列話傳遞的參數可用控制器處理,也可使用路由函數處理

 

 

*********************

控制器處理參數

 

HelloController

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(Person person){
        System.out.println(person);

        return person.toString();
    }

    @RequestMapping("/hello2")
    public String hello2(Mono<Person> person){
        person.subscribe(System.out::println);

        return "success";
    }

    @RequestMapping("/hello3")
    public Mono<Person> hello3(ServerWebExchange exchange){
        System.out.println("hello 3");

        return exchange.getFormData().map(map -> {
            String name=map.getFirst("name");
            Integer age=Integer.parseInt(Objects.requireNonNull(map.getFirst("age")));
            System.out.println("name:"+name);
            System.out.println("age:"+age);

            Person person=new Person();
            person.setName(name);
            person.setAge(age);

            return person;
        });
    }

    @RequestMapping("/hello4")
    public Mono<Person> hello4(ServerWebExchange exchange){
        System.out.println("hello 4");

        return exchange.getFormData().flatMap(map -> {
            String name=map.getFirst("name");
            Integer age=Integer.parseInt(Objects.requireNonNull(map.getFirst("age")));
            
            System.out.println("name:"+name+"  "+"age:"+age);

            Person person=new Person();
            person.setName(name);
            person.setAge(age);
            
            return Mono.just(person);
        });
    }
}

 

 

*********************

路由函數

 

CustomRouterConfig

@Configuration
public class CustomRouterConfig {

    @Bean
    public RouterFunction<ServerResponse> initRouterFunction(){
        return RouterFunctions.route()
                .POST("/hello",serverRequest -> serverRequest.formData().flatMap(map -> {
                    String name=map.getFirst("name");
                    Integer age=Integer.parseInt(Objects.requireNonNull(map.getFirst("age")));
                    System.out.println("name:"+name);
                    System.out.println("age:"+age);

                    Person person=new Person();
                    person.setName(name);
                    person.setAge(age);

                    return ServerResponse.ok().bodyValue(person);
                }))
                .build();
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章