2016-09-21 51 views
1

我有一個REST API,它彙集來自幾個不同來源的數據,進行一些格式化,並將它提供回JSON有效載荷。在REST API中返回不完整結果的正確方法?

/API /胡說/資源

[ 
    { 
     "name": "resource1", 
     "value": 19, 
     "foo": "bar" 
    }, 
    { 
     "name": "resource2", 
     "value": 68, 
     "foo": "baz" 
    }, 
    { 
     "name": "resource3", 
     "value": 88, 
     "foo": "blee" 
    } 
    //etc... 
] 

然而,一些我聚集來源是不可靠的,並要求他們超時,失敗,或者得不到迴應間歇。

[ 
    { 
     "name": "resource1", 
     "value": 19, 
     "foo": "bar" 
    }, 
    //resource2 is missing :c 
    { 
     "name": "resource3", 
     "value": 88, 
     "foo": "blee" 
    } 
    //etc... 
] 

當這個集合的一部分失敗,什麼是最好的/ REST風格/正確地通知我的REST API的消費者,他們所請求的數據是不完整的方法嗎?

+0

我不確定。有趣的問題。可能你應該爲資源添加一個status屬性,所以你可以在缺少的遠程資源上設置一個'status:「timeout」'或類似的東西。 – inf3rno

+0

我會,但我不一定知道在這些錯誤情況下缺少哪些特定資源,所以在這些情況下我不能假定佔位符。 – 72A12F4E

+0

我想至少你知道超時發生在哪些資源上。從客戶角度來看,一些資源不可用很重要嗎? – inf3rno

回答

-1

我想你應該使用特殊的HTTP狀態碼。你可以找到完美的一個here

+0

206部分內容似乎有潛力,但我認爲它的目的在於從客戶端發送的某個索引下載部分文件的特定用例。在我的使用案例中,它不正確,因爲我實際上並沒有要求範圍或下載部分文件,我只是收到不完整的內容 – 72A12F4E

+0

@ 72A12F4E Yepp,afaik它用於服務範圍請求,所以它不能解決您的問題問題。 – inf3rno