一般来说,我们用这种风格的参数写路线
GET /clients/:clientId/info Controllers.Application.client(clientId)
在某些情况下,我在方法Application.client()中不需要clientId,我希望我可以这样写入条目
GET /clients/:clientId/info Controllers.Application.client()
例如,我想通过解析url来获取clientId。
换句话说,希望url pattern / clients / [^ /] + / info转到Application.client()方法。
怎么实现呢?
我担心你不能省略路由参数的使用。路径解析器将阻止您跳过它们。
您必须提供一个接受参数的方法。
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
和路径/clients/:clientId/info
两个不同的路线 - 这是显而易见的 - 如何路由器应该猜测路径/clients/foo/info
应该路由到其他行动而不是/clients/bar/info
???
这是你的Application.client(clientId)
行动的任务