我正在開發 API 服務,但我在如何實作 500 次回應方面遇到了兩難境地。我不確定在發送實際錯誤原因或只是一般的“內部服務器錯誤”訊息之間哪個最好。
我可以看到的每個論點是:
明確的錯誤描述:任何使用 API 的客戶端都清楚原因,并且當知道確切的錯誤原因時,可以更輕松地向 API 開發人員提供反饋。
一般錯誤:底層實作對客戶端隱藏,因為他們不需要知道 API 在幕后是如何作業的。從這個角度來看,它也可能對惡意客戶端有更好的安全性。
這通常被認為是一種更好的做法,還有其他需要考慮的理由嗎?
uj5u.com熱心網友回復:
最佳實踐是拋出一個通用錯誤訊息,盡可能少地向客戶端回傳資訊。如果出于除錯目的需要額外的背景關系,您可以將該背景關系寫入服務器端日志。
例如,在 C# 中:
try
{
// Do something
}
catch (Exception ex)
{
Log.Error("Error details", ex);
return StatusCode(500, "Something went wrong");
}
如果您登錄到服務器,請記住混淆任何機密資訊(如密碼);您應該記錄足夠的相關資訊來診斷和解決問題。
uj5u.com熱心網友回復:
我采用的方法(在 Node.js 中)如下:
- 未捕獲的錯誤會變成
InternalServerError. 例外。 - 我們有一個中間件可以把它變成標準的
application/problem json錯誤回應。 - 在開發/測驗中,錯誤回應包含來自拋出錯誤的訊息。
- 在 prod 中,這會變成一條通用錯誤訊息,不會泄露任何有關內部資訊的資訊。
- 在所有情況下,我們都會記錄真實的訊息。
- 在我構建的一些系統中,我們在錯誤回應中發出了一個“id”,對應于日志中的一個 id,使某人更容易報告問題,我們也可以更輕松地查找相關資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474195.html
