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