简介

Vert.x 入门

在本指南中,您将学习如何开始一个新的 Vert.x Web 项目。

开始之前,您需要

  • JDK 11 或更高版本
  • 文本编辑器或 IDE
  • Maven 3 或更高版本
  • curl、HTTPie 或浏览器来执行 HTTP 请求

1启动项目

要创建新项目,请访问 start.vertx.io

选择您想使用的 Vert.x 版本,选择 Java 作为语言,Maven 作为构建工具,然后输入您想要的组 ID 和 artifact ID。接着,在“依赖”文本框中输入 Vert.x Web 以将其添加为依赖项。完成后,点击生成项目按钮。将 zip 文件保存到您的计算机上,并解压到您选择的文件夹中。

生成的项目包含

  • 配置用于构建和运行您的应用程序的 Maven 构建描述符 pom.xml
  • 一个示例 Verticle 和一个使用 JUnit 5 的示例测试
  • 用于强制执行代码风格的编辑器配置
  • 用于忽略文件的 Git 配置

如果您想立即尝试,可以使用 MavenGradle 下载此示例项目。

2代码

用您选择的编辑器打开项目,并导航到 src/main/java/com/example/starter/MainVerticle.java。此源文件包含一个示例 Verticle(Vert.x 部署单元),它会启动一个 HTTP 服务器。您将修改它,以便向所有向您的服务器发出请求的人问好。请按如下方式更改代码:

Java
Kotlin
package com.example.starter;
 
import io.vertx.core.Future;
import io.vertx.core.VerticleBase;
import io.vertx.core.MultiMap;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
 
public class MainVerticle extends VerticleBase {
 
  @Override
  public Future<?> start() {
    // Create a Router
    Router router = Router.router(vertx);
 
    // Mount the handler for all incoming requests at every path and HTTP method
    router.route().handler(context -> {
      // Get the address of the request
      String address = context.request().connection().remoteAddress().toString();
      // Get the query parameter "name"
      MultiMap queryParams = context.queryParams();
      String name = queryParams.contains("name") ? queryParams.get("name") : "unknown";
      // Write a json response
      context.json(
        new JsonObject()
          .put("name", name)
          .put("address", address)
          .put("message", "Hello " + name + " connected from " + address)
      );
    });
 
    // Create the HTTP server
    return vertx.createHttpServer()
      // Handle every request using the router
      .requestHandler(router)
      // Start listening
      .listen(8888)
      // Print the port on success
      .onSuccess(server -> {
        System.out.println("HTTP server started on port " + server.actualPort());
      })
      // Print the problem on failure
      .onFailure(throwable -> {
        throwable.printStackTrace();
      });
  }
}

这段代码创建了一个 Vert.x Web 路由器(用于将 HTTP 请求路由到特定请求处理程序的D对象),并在端口 8888 上启动了一个 HTTP 服务器。对于每个请求,它都会返回一个 JSON 对象,其中包含请求的地址、查询参数 name 和一条问候消息。

3运行

要运行代码,请打开终端并导航到您的项目文件夹。按如下方式构建应用程序:

$ mvn package

然后,运行应用程序

$ mvn exec:java
HTTP server started on port 8888
apr 03, 2020 11:49:21 AM io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer
INFO: Succeeded in deploying verticle

现在服务器已启动并运行,尝试发送一个请求:

HTTPie
curl
$ http https://:8888
HTTP/1.1 200 OK
content-length: 115
content-type: application/json; charset=utf-8
 
{
    "address": "0:0:0:0:0:0:0:1:32806",
    "message": "Hello unknown connected from 0:0:0:0:0:0:0:1:32806",
    "name": "unknown"
}
 
$ http https://:8888\?name\="Francesco"
HTTP/1.1 200 OK
content-length: 119
content-type: application/json; charset=utf-8
 
{
    "address": "0:0:0:0:0:0:0:1:32822",
    "message": "Hello Francesco connected from 0:0:0:0:0:0:0:1:32822",
    "name": "Francesco"
}

4更进一步

现在您已经体验了 Vert.x 入门的简单和乐趣,这里有一些指导,可帮助您进一步深入探索: