2017-06-06 102 views
0

(這有點抽象的哲學問題。但我相信它有客觀的具體答案。)API狀態頁響應代碼

我正在寫一個API,我的API有一個「狀態」頁面(如, https://status.github.com/)。

如果我有適當的邏輯來確定狀態,說明一切都很好,我的計劃是返回200 OK,並返回一個JSON響應,其中包含關於狀態頁測試的每個服務的更多信息。

但是,如果我的邏輯說API失效會怎麼樣?說數據庫沒有反應或什麼的。

我想我想返回500 INTERNAL SERVER ERROR(或503 SERVICE NOT AVAILABLE)以及帶有更多細節的JSON響應。

但是,是否破壞了HTTP狀態碼規範?這會混淆最終用戶嗎?我的狀態頁面本身在這種情況下工作得很好。所以也許它應該返回200?但是這意味着任何使用它的人都必須深入到正文中尋找一個特定的參數來確定API的狀態,而不僅僅是檢查HTTP狀態碼。 (另外如果我的狀態頁面本身被打破了,我很好,最終用戶把這意味着API是關閉的,因爲這是一個非常糟糕的信號......)

想法?關於狀態頁應該如何工作的官方協議?

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

回答

1

對我來說,網頁應返回200,除非有問題本身。事實上,比解析更容易檢查響應的狀態代碼,但使用HTTP狀態代碼對應用程序信息進行編碼會破壞人們(和蜘蛛)的期望。如果蜘蛛通過您的頁面,並看到500或503會認爲您的網站有問題的網頁,而不是該網頁是好的,並表明該網站已關閉。

而且,當你看到,它不會」有可能服務之間的區別是下來狀態頁面已關閉案件,與應發送500最後唯一的一個。另外,如果您顯示多個服務(如twitter status page),該怎麼辦?使用200

相關:https://stackoverflow.com/a/943021/1536382https://stackoverflow.com/a/34324179/1536382

+0

感謝這個,+1,如果沒有其他人有相反的觀點風鈴,我會記住這接受。 – lostphilosopher