2011-05-15 41 views
0

有没有办法使Play! Framework忽略斜杠和?的部分URL?编码网址的播放!框架

通常情况下,如果我有以下几点:

www.123.com/api/link/http:www.bla.com/?contenId=123&User=test

它不会工作。在这种情况下,我想要做的只是在URL的最后一部分的String变量中保存链接。我想我可以强迫客户用别的东西代替/?,但我宁愿保持简单。

我的第一个念头是,也许有配置路由,使得我们有类似的方式:

/api/link/{data}

其中data将持有的URL的任何遗迹。但无法找到如何做到这一点。

回答

6

除了您的主要网址,您不能有:/?。你应该编码你的参数将其追加到主URL。对于Java,请参阅URLEncoder

这不是一个有效的URL:

http://www.123.com/api/link/http://www.bla.com/?contenId=123&User=test 

它必须是:

http://www.123.com/api/link/http%3a%2f%2fwww.bla.com%2f%3fcontenId%3d123%26User%3dtest 

然后,你可以把它传递给{data}参数和解码它在你的处理方法。

+1

+1,因为如果?在URL中是文本的一部分,而不是标记查询字符串,那么它*必须*被转义。 – 2011-05-15 12:40:56