2011-05-15 60 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