2014-01-13 28 views
0

我正在開發一個使用URL路由和查詢字符串參數的Web應用程序。我的一些參數包含複雜的列表並需要一些內部分隔符。例如,我需要一個過濾器來支持多個實體,如用戶名和日期。什麼字符可以(也應該)用作URL查詢字符串中字段值的內部分隔符?

基本上我需要編碼以下JSON對象:

{ 
"users" : ["alex","mike","john"], 
"datefrom" : "2013-12-01" 
} 

作爲一個查詢字符串參數(filter)。

我有幾個想法:

_http:// hostedapplication /過濾器=用戶@亞歷克斯,麥克,約翰; datefrom @ 2013年12月1日

_http:// hostedapplication /過濾器=用戶| alex,mike,john!datefrom | 2013-12-01

那麼,這裏有什麼典型的方法?我可能使用哪些字符作爲分隔符?

回答

2

對於REST接口,使用GET參數作爲GET請求的過濾器很常見。因此,您可以使用頂級過濾參數作爲GET參數,並且如果深度更深,您確實可以使用數組分隔符。

在這種情況下,沒有一種標準的方法可以做到這一點,REST沒有這方面的規則,所以您可以自己決定。就個人而言,我喜歡逗號:

?users=alex,mike,john&datefrom=2013-12-01 

只是注意,如果任何用戶都包含URL控制字符的用戶名,你應該URL編碼他們。

0

的標準方法(從HTML形式實現)是每次都有新值時重複鍵:

?user=alex&user=mike&user=john&datefrom=2013-12-01 

,它將分析表單數據大多數圖書館會給你一個數組,當你問user自動。

(如果您使用PHP,那麼您將需要使用user[]而不是user)。

這種方法的缺點是它不是非常緊湊,所以如果你有很多數據,你很可能會更早地遇到URL長度限制。

相關問題