一般来说,我们用这种风格的参数写路线
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()方法。
如何实施?
答案 0 :(得分:1)
我担心你不能省略路线参数的使用。路径解析器将阻止您跳过它们。
您必须提供一个接受参数的方法。
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();
}
}
答案 1 :(得分:0)
您不能使用两个不同的路由,使用相同的方法GET
和路径/clients/:clientId/info
- 这很明显 - 路由器应该如何猜测路径/clients/foo/info
应该路由到/clients/bar/info
以外的其他操作1}} ...
这是Application.client(clientId)
行动