我正在使用RxJava和Vert.x来调用“/ callme”的路由,如下所示。当我打电话给“/ callme”时,它仍会打印“你好,从rx verticle!”
@Override
public void start() throws Exception {
HttpServer server = vertx.createHttpServer();
` server.requestStream().toObservable().subscribe(req -> {
HttpServerResponse res = req.response();
res.putHeader("content-type", "text/html");
res.end("Hi there, from rx verticle!");
});
server.listen(8090);
Router router = Router.router(Vertx.vertx());
router.route().handler(BodyHandler.create());
// Bind "/" to our hello message - so we are still compatible.
router.route("/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response
.putHeader("content-type", "text/html")
.end("<h1>Hello from my first Vert.x 3 application</h1>");
});
router.route("/callme*").handler(BodyHandler.create());
router.post("/callme").handler(this::divide);
}
答案 0 :(得分:1)
您总是获得相同响应的原因是您创建了路由器,但您从未将其注册到服务器。
@Override
public void start() throws Exception {
HttpServer server = vertx.createHttpServer();
Router router = Router.router(Vertx.vertx());
router.route().handler(BodyHandler.create());
// Bind "/" to our hello message - so we are still compatible.
router.route("/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response
.putHeader("content-type", "text/html")
.end("<h1>Hello from my first Vert.x 3 application</h1>");
});
router.route("/callme*").handler(BodyHandler.create());
router.post("/callme").handler(this::divide);
server.requestStream().toObservable().subscribe(req -> {
HttpServerResponse res = req.response();
res.putHeader("content-type", "text/html");
res.end("Hi there, from rx verticle!");
});
vertx
.createHttpServer()
.requestHandler(router::accept)
.rxListen(8090)
.subscribe(httpServer -> logger.info("server is running..."));
}