我有author
和article
等REST资源。可以有多个Author
,每个author
可以拥有多个articles
。我知道可以在一个servlet中为他们的Scalatra处理程序建模,如
/author/:id/article
/author/:id/article/:id
等。但这样做我的servlet文件变大了。它看起来author
下的所有内容都需要在一个servlet中处理。
我想将这些东西拆分成几个独立的servlet,这些servlet在一起注册时会组成整个资源地址。所以我希望在一个servlet中有author
个相关的东西,在另一个servlet中有article
个相关的东西。
Scalatra有没有办法做到这一点?我发现了关于Sinatra的类似问题,但没有得到好的答案Sub routing in Sinatra
答案 0 :(得分: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, "/*")
}