【发布时间】:2020-07-03 16:44:11
【问题描述】:
到目前为止,我真的很喜欢 Vertx。文档很棒,跨语言支持也很棒。
但是,针对我的具体问题的示例和文档似乎都已过时。我猜自 3.4.x 以来 API 发生了一些变化(我目前正在使用 3.9.1 和 Scala 2.13.1。
我希望能够将我的路线拆分到多个文件中,以使事情井井有条。例如,我想要一个UserRoutes 文件,并为TodoRoutes 创建一个单独的文件,这两个文件都可以在我的ServerVerticle 中使用。
我发现这样做的唯一方法基本上是:
用户路由:
object UserRoutes {
def createUser(context: RoutingContext): Unit = {
// do work
}
def login(context: RoutingContext): Unit = {
// do work
}
}
ServerVerticle:
class ServerVerticle(vertx: Vertx) extends AbstractVerticle {
override def start(): Unit = {
val router: Router = Router.router(vertx)
router.post("/user/new").handle(UserRoutes.createUser)
router.post("/user/login").handle(UserRoutes.login)
....
}
}
我真正想做的是:
object UserRoutes {
// somehow get a reference to `router` or create a new one
router.post("/user/new", (context: RoutingContext) => {
// do work
})
router.post("/user/login", (context: RoutingContext) => {
// do work
})
}
我更喜欢这个的原因是因为这样更容易看到 UserRoutes 中正在执行的操作,例如正在使用什么路径、需要什么参数等。
我尝试对this example application 采取类似的方法,但显然这对于存在于3.9 中的 Vertx API 来说是不可能的?
最好的方法是什么?我错过了什么?大型 REST API 如何分解它们的路由?
【问题讨论】:
-
您可能正在寻找子路由器:stackoverflow.com/questions/58362832/…
标签: scala vert.x vertx-verticle java-vertx-web