Routes Play2管线动态部分不作为方法参数

Routes Play2管线动态部分不作为方法参数,routes,playframework-2.0,Routes,Playframework 2.0,通常,我们用这种样式编写带有参数的路由 GET /clients/:clientId/info Controllers.Application.client(clientId) 在某些情况下,我不需要方法Application.client()中的clientId,我希望可以这样编写条目 GET /clients/:clientId/info Controllers.Application.client() 例如,我想通过解析url来获

通常,我们用这种样式编写带有参数的路由

GET  /clients/:clientId/info              Controllers.Application.client(clientId)
在某些情况下,我不需要方法Application.client()中的clientId,我希望可以这样编写条目

GET /clients/:clientId/info               Controllers.Application.client()
例如,我想通过解析url来获取clientId

换句话说,希望url模式/clients/[^/]+/info转到Application.client()方法


如何实现它?

恐怕不能忽略路由参数的使用。路由分析器将防止您跳过它们

您必须提供一个接受参数的方法

GET        /clients/:clientId/info        Controllers.Application.client(clientId)
如果您确实需要一个具有无参数签名的方法,那么您所能做的就是转发来自具有参数的方法的请求

GET        /clients/:clientId/info        Controllers.Application.client(clientId)
你没有写你正在使用的语言。在Scala中,它将如下所示:

object Application extends Controller {

  def client(id: String): Action[AnyContent] = client()

  def client() = Action {
    Ok("")
  }

}
对于Java:

public class Application extends Controller {

    public static Result client(String id) {
        return client();
    }

    public static Result client() {
        return ok();
    }

}

您不能用相同的方法使用两个不同的路由
GET
和path
/clients/:clientId/info
-这很明显-路由器应该如何猜测path
/clients/foo/info
应该路由到
/clients/bar/info
之外的其他操作

这是您的
应用程序的任务。客户端(clientId)
操作