以编程方式在Play2.0中添加路由

Ana*_*han 7 playframework-2.0

在1.2.X中我们可以做到

Router.addRoute("GET", "/somePath", "controller.methodName");
Run Code Online (Sandbox Code Playgroud)

我正在编写一个模块,它添加一个"路径",由模块中的控制器处理.它是一个OAuth处理程序,希望用户不必处理OAuth握手等.

我怎么能在Play 2.0中这样做?

ed.*_*ed. 9

您无法以编程方式添加到Routes对象,但您可以通过覆盖来拦截Web请求并自行处理它们GlobalSettings.onRouteRequest.例如:

override def onRouteRequest(request: RequestHeader): Option[Handler] = {
  //do our own path matching first - otherwise pass it onto play.
  request.path match {
    case "/injectedRoute" => Some(controllers.Application.customRoute)
    case _ => Play.maybeApplication.flatMap(_.routes.flatMap {
      router =>
      router.handlerFor(request)
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是推荐的方法,但它对我有用.这是github上的一个示例:https://github.com/edeustace/play-injected-routes-example


bde*_*r01 -10

* play2.0 * *在你的路由文件中添加这一行* GET /somePathcontroller.methodName()