Basic Vert.x-Web concepts

Here’s the 10000 foot view:

RouterVert.x-Web最核心的概念. Router是一个持有零到多个Routes的对象

Router会将HTTP request发送到第一个匹配该请求的route身上.

route持有一个与HTTP request相匹配的handler, 然后该handler接受该请求. 然后执行具体任务, 当执行完任务之后你可以选择结束该请求或者将它传递给下一个匹配的handler.

下面是一个简单的示例:

  1. HttpServer server = vertx.createHttpServer();
  2. Router router = Router.router(vertx);
  3. router.route().handler(routingContext -> {
  4. // This handler will be called for every request
  5. HttpServerResponse response = routingContext.response();
  6. response.putHeader("content-type", "text/plain");
  7. // Write to the response and end it
  8. response.end("Hello World from Vert.x-Web!");
  9. });
  10. server.requestHandler(router::accept).listen(8080);

我们创建了一个HTTP Server服务器, 接着创建了一个router. 我们没有对这个route指定匹配规则,因此它会匹配所有的HTTP request.

然后我们在该route上设置了一个handler, 这个handler会处理该服务器上所有的HTTP request.

传递给handler的是一个RoutingContext对象, 该对象包含一个一个标准的Vert.x HttpServerRequestVert.x HttpServerResponse,但是还包含了很多其他的Vert.x-Web里的特性.

对于每一个HTTP request都会生成一个唯一的RoutingContext实例, 但是给实例会传递给所有匹配该请求的handler.