2014-03-25 54 views
1

我們試圖遵循一種非常嚴格的REST服務習慣用法,但是我們遇到了兩種客戶端需要不同表示的相同資源的情況。一個是前端,他們會更喜歡只有他們需要的字段和更扁平的結構(用於性能)的最小資源,另一個需要我們的數據存儲中的所有字段都是嵌套結構。在給定規範URL的情況下,REST服務處理這種情況的慣用方式應該與訪問相同資源的方式相同。我們考慮在請求中添加預測,但是由於這種結構仍然是相當嵌套的,這會導致JS客戶端的性能問題,因爲它必須遍歷結構並將其扁平化,這在資源數量上可能相當昂貴回報很高。具有多個視圖的REST資源

回答

4

我會建議有兩種選擇:

1)如果查詢字段可以改變,你可以指定你想要的查詢參數字段(結構)。這在REST API中很常見。沒有規範,你會返回一個默認的字段列表。什麼應該是默認值,取決於服務,但一般而言,最小集合會使性能更好地默認。爲了避免列出所有字段,可以使用類似fields=all的東西。在你的情況下,structure可能更有意義。

2)您可以在自定義請求標頭中對字段請求進行編碼。有人會認爲這是更爲穩定的方法,因爲您只修改響應的格式而不是調用基礎操作,因此URL應該相同。

實際上,大多數服務更喜歡第一種方法,因爲它被認爲更容易接近。

就我個人而言,我認爲這是一個邊緣選擇。我更喜歡在Accept標頭中對返回媒體(JSON,HTML,XML等)進行編碼。任何體面的開發人員都有一些工具可以很容易地設置標題,但根據我的經驗,查詢參數成語更爲流行,並且對於約定有很多要說的。

請注意,如果您使用標頭方法,則應該不要使用結構/字段規範的Accept標頭。如果你走這條路線,請添加自己的標題。

+0

很酷,我沒有想過標題。 – shmish111