【发布时间】:2017-06-06 17:39:49
【问题描述】:
(这是一个抽象的哲学问题。但我相信它有客观的具体答案。)
我正在编写一个 API,我的 API 有一个“状态”页面(例如,https://status.github.com/)。
如果我确定状态的任何逻辑都表明一切正常,我的计划是返回 200 OK,并返回一个 JSON 响应,其中包含关于我的状态页面测试的每项服务的更多信息。
但如果我的逻辑表明 API 已关闭怎么办?说数据库没有响应什么的。
我想我想返回 500 INTERNAL SERVER ERROR(或 503 SERVICE NOT AVAILABLE)以及包含更多详细信息的 JSON 响应。
但是,这是否违反了 HTTP 状态代码规范?这会让最终用户感到困惑吗?在这种情况下,我的 状态页面本身 工作得很好。所以也许它应该返回200?但这意味着任何使用它的人都必须深入研究主体,寻找特定参数来确定 API 的状态,而不是仅仅检查 HTTP 状态代码。 (另外,如果我的状态页面本身损坏了,我可以接受最终用户认为 API 已关闭,因为这是一个非常糟糕的信号......)
想法?是否有关于状态页面应该如何工作的官方协议?
【问题讨论】:
标签: http http-headers http-status-codes