Playframework 类来解析/验证Play框架中特定路由的URL?
如果我有一个URL字符串,说Playframework 类来解析/验证Play框架中特定路由的URL?,playframework,playframework-2.3,Playframework,Playframework 2.3,如果我有一个URL字符串,说https://localhost/users/45,我的Play Framework 2.3项目中有一条路径 GET/users/:id UserController.GET(id:Long) 如何验证/解析该URL并从中获取ID?我确实知道我要核对的具体路线/电话。我真正想做的是反向路由,类似这样: routes.UserController.get_parse(url)匹配{ 案例(id:Long)=>println(“使用数据”) 大小写=>抛出异常(“错误U
https://localhost/users/45
,我的Play Framework 2.3项目中有一条路径
GET/users/:id UserController.GET(id:Long)
如何验证/解析该URL并从中获取ID?我确实知道我要核对的具体路线/电话。我真正想做的是反向路由,类似这样:
routes.UserController.get_parse(url)匹配{
案例(id:Long)=>println(“使用数据”)
大小写=>抛出异常(“错误URL”)
是否有这样做的机制?Play的路由器将自动验证URL(也针对参数类型)因此,你不需要在你的动作中做额外的验证。也就是说,如果你调用一个<代码> /用户/某个字符串< /代码>,它将抛出404个未找到…< p>这个请求看起来很奇怪,直到你考虑实现一个REST/超媒体API。 假设路由文件是
GET /foo/:id/bar Foo.bar(id)
有人将{“数据”:“某物”,“父项”:“/foo/5/bar”}
发布到/foo/123/bar
Play将从请求URL/foo/123/bar
中提取id参数(例如,用于内部数据库id),但您是否可以对解析/foo/5/bar
执行相同的操作
简短的回答 不,您不能为此使用路由文件
长答案 从routes文件中,Play生成用于转换的代码
target/scala-2.x/src\u managed/main/routes\u routing.scala
,如下所示
private[this] lazy val Foo_bar0_route = Route(
"GET",
PathPattern(
List(
StaticPart(Routes.prefix),
StaticPart(Routes.defaultPrefix),
StaticPart("/foo/"),
DynamicPart("id", """[^/]""", true),
StaticPart("/bar")
)
)
)
这可能会有帮助,但
private[this]
会阻止它。我不是在验证用户正在调用的URL。用户正在将URL作为POST中数据的一部分传入,我正在验证和解析该数据。只是概念:使用WS-API如何:确定给定字符串是否为有效路由(即通过HEAD请求)?这是一个有点不寻常的情况,因为在大多数情况下,人们只想解析当前请求的URL。如果有一个答案,它就在。