2013-10-15 71 views
1

我最近偶然發現了多個會談,聲稱你應該儘快對任何傳入的HTTP請求做出響應,這似乎是合理的,但我不清楚在使用此策略時如何溝通失敗。如何在給予HTTP響應的過程中處理失敗?

讓我們來看看發送響應代碼爲200並開始呈現HTML頁面的情況。在我們構造主體時,數據從各種查詢中流入,並突然發生錯誤。在這個時候改變我們的想法已經太遲了。

或者,也許一個更實際的例子:

我們提供了潛在提供數據的很多的API。爲了保持速度,我們通過一些項目函數將數據從數據庫連接中流出,然後轉換爲流式JSON編碼器,該編碼器可以正確寫入套接字。噗噗,出了點問題。 DB連接斷開,重新連接嘗試超時。我們剛剛刷新了100K個JSON對象,但結果集實際上比這個大。

有什麼好的方法可以在HTTP響應的一半中優雅地死去?

在HTML的情況下,人們總是可以打印一些人類可讀的信息。並且在API中,一旦可以用{ "results": [ /* payload goes here */ ], "error": { /* error information */ } }作出響應,沒關係,因爲錯誤是在有效負載之後寫入的。但理想情況下,我想使用HTTP協議中內置的東西。看起來很奇怪,說200,然後提供一個錯誤。有沒有更好的辦法?

+0

你能否提供你提到的會談的鏈接,如果你有他們? –

回答

0

有沒有什麼好的方法可以在HTTP 響應中正常中途死去?

不,如果你刷新HTTP狀態到客戶端 - 有沒有可能去改變它,所以唯一的辦法是產生完全在服務器上輸出,然後開始將其與相應的HTTP代碼流媒體客戶端

注 - 爲大JSON數據檢出gzip壓縮

1

一旦發送狀態碼,您唯一的選擇是關閉連接。

相關問題