首页 /  技术专区  /  Vert.x 宽屏模式 >

Vert.x中的路由Router

我们会发现,前面写的两个程序,无论访问什么地址,都是可以访问到Hello from Vert.x,这显然不是我们想要的结果,也不是我们之后所需要用到的。

我们需要配置指定路由,通过路由进行访问接口,这样才是我们想要结果。


1、同样方式复制出RouterVerticle文件。

package vertx;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.ext.web.Router;

public class RouterVerticle extends AbstractVerticle {

  //第一步 声明Router
  Router router;

  @Override
  public void start(Promise<Void> startPromise) throws Exception {

    //第二步 初始化Router
    router = Router.router(vertx);

    //第三步 配置Router解析url
    router.route("/").handler(
      req -> {
        req.response()
          .putHeader("content-type", "text/plain")
          .end("Hello from Vert.x!");
      }
    );

    //第四步 将Router与vertx HttpServer 绑定
    vertx.createHttpServer().requestHandler(router).listen(8888, http -> {
      if (http.succeeded()) {
        startPromise.complete();
        System.out.println("HTTP server started on port 8888");
      } else {
        startPromise.fail(http.cause());
      }
    });
  }
}

2、启动测试

这样我们再访问根路径的时候,就可以访问到Hello from Vert.x。

image.png

访问其他路径的时候,就会出现Resource not found。

image.png

将router改为get请求

router.get("/").handler(
  req -> {
    req.response()
      .putHeader("content-type", "text/plain")
      .end("Hello from Vert.x!");
  }
);

image.png

将router改为post请求

router.post("/").handler(
  req -> {
    req.response()
      .putHeader("content-type", "text/plain")
      .end("Hello from Vert.x!");
  }
);

image.png


头像
0/200
图片验证码