2

我有 REST 资源,例如authorarticle. 可以有多个Authors 并且每个author可以拥有多个articles. 我知道可以在一个 servlet 中对他们的 Scalatra 处理程序进行建模,例如

  • /author/:id/article
  • /author/:id/article/:id

等等,但这样做我的 servlet 文件会变大。看起来下面的所有内容都author需要在一个 servlet 中处理。

我想把这些东西分成几个独立的servlet,当它们一起注册时,它们会构成整个资源地址。所以我想author在一个 servlet 中有相关的东西,而在另一个 servlet中有相关的东西article

有没有办法在 Scalatra 中做到这一点?我发现了关于 Sinatra 的类似问题,但没有很好的答案Sinatra 中的子路由

4

1 回答 1

3

您应该可以随意设置您的 servlet 和路由。

例如,您可以设置两个 servlet,如下所示:

class AuthorsServlet extends WebStack {
  get("/authors") { }

  get("/authors/:id") { }
}

class ArticlesServlet extends WebStack {
  get("/authors/:authorId/articles") { }

  get("/authors/:authorId/articles/:id) { }

}

然后在 ScalatraBootstrap 中注册您的 servlet:

override def init(context: ServletContext) {
  context.mount(new AuthorsServlet, "/*")
  context.mount(new ArticlesServlet, "/*")
}
于 2013-04-04T09:19:20.900 回答