Vert.x 卸载子路由器
Vert.x unmount subrouter
我想根据特定事件动态创建、装载和卸载 io.vertx.ext.web.Router
。
使用 Router::router
和 Router::mountSubRouter
创建新路由器并安装它没有问题。每个创建的子路由器都将添加到 java.util.Map
中,以便稍后可以获取它们,因为无法查询子路由器的根 Router
。
但是 Router
不提供卸载子路由器的功能。我可以在子路由器上使用 Router::clear
来删除它的所有路由,但想知道是否有更好的方法来卸载子路由器。
试试这个:
public static void unMountSubRouter(Router router, String root) {
router.getRoutes().stream()
.filter(route -> route.getPath() != null && route.getPath().startsWith(root))
.forEach(route -> route.remove());
}
我想根据特定事件动态创建、装载和卸载 io.vertx.ext.web.Router
。
使用 Router::router
和 Router::mountSubRouter
创建新路由器并安装它没有问题。每个创建的子路由器都将添加到 java.util.Map
中,以便稍后可以获取它们,因为无法查询子路由器的根 Router
。
但是 Router
不提供卸载子路由器的功能。我可以在子路由器上使用 Router::clear
来删除它的所有路由,但想知道是否有更好的方法来卸载子路由器。
试试这个:
public static void unMountSubRouter(Router router, String root) {
router.getRoutes().stream()
.filter(route -> route.getPath() != null && route.getPath().startsWith(root))
.forEach(route -> route.remove());
}