有没有办法在conf/routes中包含表达式,所以我不必为这些简单的操作创建新的控制器?
GET /:id/:secret controllers.Default.redirect(to=id+"/edit?secret="+secret)
有没有办法在conf/routes中包含表达式,所以我不必为这些简单的操作创建新的控制器?
GET /:id/:secret controllers.Default.redirect(to=id+"/edit?secret="+secret)
仔细查看文档中的路由类型,很可能您可以使用即 跨越多个 / 的动态部分。
例如,这会将所有内容/redirect/
作为单个字符串传递:
GET /redirect/*targetPath controllers.Application.redirectTo(targetPath:String)
所以在请求http://localhost/redirect/new/location/123?secret=foo&something=bar
它的价值将是:new/location/123?secret=foo&something=bar
可选地,您甚至不需要将您的声明secret
为路由参数,因为您可以使用 ie。bindFromRequest()
检查它是否存在的方法。(因此可以将其$_GET['secret']
与PHP
不,但你真的只需要一种路线和一种行动方法来完成我认为你想要的。
配置/路由
GET /redirect/:id/:secret controllers.Default.redirect(id:String, secret:String)
默认.java
public static Result redirect(String id, String secret)
{
return redirect(id + "/edit?secret=" + secret);
}