我最近偶然發現了多個會談,聲稱你應該儘快對任何傳入的HTTP請求做出響應,這似乎是合理的,但我不清楚在使用此策略時如何溝通失敗。如何在給予HTTP響應的過程中處理失敗?
讓我們來看看發送響應代碼爲200並開始呈現HTML頁面的情況。在我們構造主體時,數據從各種查詢中流入,並突然發生錯誤。在這個時候改變我們的想法已經太遲了。
或者,也許一個更實際的例子:
我們提供了潛在提供數據的很多的API。爲了保持速度,我們通過一些項目函數將數據從數據庫連接中流出,然後轉換爲流式JSON編碼器,該編碼器可以正確寫入套接字。噗噗,出了點問題。 DB連接斷開,重新連接嘗試超時。我們剛剛刷新了100K個JSON對象,但結果集實際上比這個大。
有什麼好的方法可以在HTTP響應的一半中優雅地死去?
在HTML的情況下,人們總是可以打印一些人類可讀的信息。並且在API中,一旦可以用{ "results": [ /* payload goes here */ ], "error": { /* error information */ } }
作出響應,沒關係,因爲錯誤是在有效負載之後寫入的。但理想情況下,我想使用HTTP協議中內置的東西。看起來很奇怪,說200,然後提供一個錯誤。有沒有更好的辦法?
你能否提供你提到的會談的鏈接,如果你有他們? –