2013-10-04 29 views
0

我實現了一個REST API與向量IDS:REST API獲取與查詢參數正確的應對

http://example.com/api/user/1 
http://example.com/api/user/2 
http://example.com/api/user/1,3 
http://example.com/api/user/1,2,3 

休息規定,如果「用戶/ 2」不存在返回一個404

忽略涉及查詢參數的可能解決方案,對於以下情況適合的響應是什麼?

用戶/ 1,2 - 用戶/ 1存在和用戶/ 2存在
響應是200

用戶/ 1,3-一組返回兩個元素 - 用戶/ 1存在,並且用戶/ 3不存在
1?用戶1在一組中的響應是200?
2?響應是404,因爲用戶/ 3不能退回?

因爲我們可能會用1處理空集?以上是否表示
用戶/ 3 - 用戶/ 3不存在
1?答案是200,空集?

+0

我已經注意到堆棧交換ge的API爲一些調用使用空集場景。 – AniAko

+0

當全套失敗時,我的意見是404。部分集合起作用時,使用200,並返回存在的值[用戶]。重要的是,記錄API的行爲。集合是REST「未覆蓋」的領域之一,因此它是開發者的判斷。也就是說,我也在所有情況下找到了200個,並且有一個空集吸引人。這是更一致的。 –

回答

0

確保響應格式對於單個ID和多個ID(向量ID)是相同的。它是REST主體之一:GET是一種「安全方法」(nullipotent),並且不會產生副作用。

對於支持在GET請求我通常使用類似於OpenSearch

GET user/1,3其中用戶/ 1存在和用戶/ 3不與

{ 
    "startIndex": 0, 
    "count": 1, 
    "itemsPerPage": 1, 
    "entry": [ 
    { /* user/1 */} 
    ] 
} 

GET user/3存在返回200響應格式向量標識的端點其中用戶/ 3不存在返回200與

{ 
    "startIndex": 0, 
    "count": 0, 
    "itemsPerPage": 0, 
    "entry": [] 
} 
+0

我在引用GET必須遵守的其他原則中增加了一個引用。 – AniAko