2012-07-09 49 views
0

我正在構建一個RESTful API,用戶可以在該API中發出關於給定對象的查詢,並附上一個權重。例如:如何構建一個具有多個互相關參數的RESTful URI

http://host.domain.com/cars?id=100&weight=50

(這是一個人爲的,簡化的例子,所以道歉,如果這沒有多大意義語義!)

的複雜性在於,用戶可能需要多個對象的結合一個查詢。我想知道的是,如果有一種標準的RESTful方式來做到這一點?例如,發生在我的選項包括:

http://host.domain.com/cars?id1=100&weight1=50&id2=200&weight2=90

http://host.domain.com/cars?ids=100,200&weights=50,90

我不喜歡第二個,因爲,例如,權重是可選的,所以你需要讓事情像這樣:

http://host.domain.com/cars?ids=100,200&weights=,90

第一個似乎最好給我,但現在看來似乎可能變得異常複雜,特別是因爲我已經有索引的參數(如G。 x1,x2)這意味着我需要兩個級別的索引(x1_1,x1_2,...)

任何人都知道這種事情的標準方法?或者任何人都可以想到一個務實的,明智的解決方案?

回答

0

我仍然不知道這是正確與否,以及LeeGee的建議似乎是合理的,但是我已經結束了這樣的打算:

http://host.domain.com/cars?id_1=100&weight_1=50&id_2=200&weight_2=90

它結束了創建難看URIs,但是在我看來,它們是一致的,並且是明確的,特別是當省略可選參數時。

1

我不知道你的問題是好的URI覆蓋 - http://www.w3.org/TR/cooluris/

我個人的選擇,沒有引用來支持它,將是首先擺脫使用服務器配置(重定向或別名查詢字符串),使基地的資源將顯示爲:

http://host.domain.com/cars

ID和權重的列表可以再追加(在URI中的「路徑信息」),分隔您認爲合適的 - 分號,或斜線。我的選擇將是後者,只是因爲它使得URI更清晰,更易於輸入。成爲問題的唯一時間是權重有時會被忽略,但如果ID是字母數字(也許是哈希),並且權重總是數字,則可以解決這個問題。

+0

所以你最終得到的東西就像http://host.domain.com/car/100/weight/50/car/200/weight/90?你認爲那是什麼意思? – Ben 2012-07-09 13:07:11