列出Vertx中所有已注册的路线

Oba*_*oof 3 java vertices vert.x

是否有任何方法(如在symfony应用程序中)列出vertx服务器上的所有可用/寄存器路由?我正面临一个问题,即我的注册路线在运行的休息测试中返回404.

Ale*_*hin 5

是的,但你必须编写一些代码才能实现这一目标.

// Example router setup
Router router = Router.router(vertx);
router.route(HttpMethod.GET, "/").handler(routingContext -> {
    routingContext.response().end("Root");
});

router.route(HttpMethod.GET, "/users").handler(routingContext -> {
    routingContext.response().end("Post");
});

router.route(HttpMethod.POST, "/users").handler(routingContext -> {
    routingContext.response().end("Post");
});

// Getting the routes
for (Route r : router.getRoutes()) {
    // Path is public, but methods are not. We change that
    Field f = r.getClass().getDeclaredField("methods");
    f.setAccessible(true);
    Set<HttpMethod> methods = (Set<HttpMethod>) f.get(r);
    System.out.println(methods.toString() + r.getPath());
}
Run Code Online (Sandbox Code Playgroud)

这将导致:

[GET]/
[GET]/users
[POST]/users
Run Code Online (Sandbox Code Playgroud)

  • `Route.toString()` 列出了这些信息和更多信息,无需反射。在发布此答案后,这可能已添加到 `toString()` 中。 (2认同)