Playframework:如何批量处理多个GET请求

时间:2016-06-06 21:47:03

标签: scala playframework url-routing

假设我们有一个PlayFramework应用程序,其中包含以下路径:

GET /a controllers.App.doA()
GET /b controllers.App.doB()
GET /c controllers.App.doC()

现在我们想提供一条额外的路线:

GET /multi controllers.App.doMulti(requests: Seq[String])

这基本上返回requests中请求的网址的组合结果。类似的东西:

def doMulti(requests: Seq[String]) = Action {
  Ok( Json.toJson(
    requests.map {
      url => ws.url(url).get().map {
        response => response.body 
      } 
    }
  ))
}

如果请求通常类似于requests=Seq("/a", "/a", "/c", "/a"),则调用上述路由。我想应该有一些内部路由的方法,而不必通过WS进行http调用。

像:

def doMulti(requests: Seq[String]) = Action {
  Ok( Json.toJson(
    requests.map {
      url => INTERNALLY_ROUTE(url).map {
        response => response.body 
      } 
    }
  ))
}

因此,INTERNALLY_ROUTE(url)将是反向路由操作的反转,将URL映射到请求的结果。所以实际上只是路由。但我不知道如何使用播放框架来做到这一点。

我尝试将Router注入我的控制器,但这会产生循环依赖。

0 个答案:

没有答案