【发布时间】:2019-03-23 01:20:45
【问题描述】:
我是 Spring 响应式新手。
我正在尝试使用邮递员从服务器获取请求信息。
首先,postman 使用 post 方法向服务器发送信息。 其次,我们一直在使用相关代码在服务器端工作并获取请求信息。
在下面的代码sn-p中
不知能不能得到ServerRequest函数的JSONObject。
邮递员正文(应用程序/json)
{
"name": "aaaa",
"name_order": ["aa", "bb", "cc"],
"type": "12",
"query": ""
}
java (RouterFunction)
import com.ntels.io.input.handler.RestInHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.config.EnableWebFlux;
import org.springframework.web.reactive.config.WebFluxConfigurer;
import org.springframework.web.reactive.function.server.*;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RequestPredicates.PUT;
import static org.springframework.web.reactive.function.server.RequestPredicates.DELETE;
@Configuration
@EnableWebFlux
public class RestConfig implements WebFluxConfigurer {
@Bean
public RouterFunction<ServerResponse> routes(RestInHandler restInHandler){
return RouterFunctions.route(POST("/input/event").
and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), restInHandler::toRESTInVerticle);
}
}
java(处理程序)
public Mono<ServerResponse> toRESTInVerticle(ServerRequest serverRequest) {
String serverRequestUrl = serverRequest.uri().toString();
System.out.println("RestInHandler test in");
System.out.println(serverRequest.method());
System.out.println(serverRequest.headers());
System.out.println(serverRequest.uri().toString());
// how can i get the jsonbody using serverrequest
// testing..
// Mono<JSONObject> jsonObjectMono = serverRequest.bodyToMono(JSONObject.class);
// Flux<JSONObject> jsonObjectFlux = serverRequest.bodyToFlux(JSONObject.class);
-> MonoOnErrorResume
return (Mono<ServerResponse>) ServerResponse.ok();
}
【问题讨论】: