API状态页面响应代码

时间:2017-06-06 17:39:49

标签: http http-headers http-status-codes

(这是一个抽象的哲学问题。但我相信它有客观的具体答案。)

我正在编写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 个答案:

答案 0 :(得分:1)

对我来说,页面应该返回200,除非本身有问题。确实,检查响应的状态代码比解析更容易,但使用HTTP状态代码来编码应用程序信息会破坏人们(和蜘蛛)的期望。如果蜘蛛通过您的页面并看到500或503会认为您的网站有一个有问题的页面,而不是该页面没有问题并且表明该网站已关闭。

另外,正如您所注意到的,它不可能区分服务已关闭状态页面已关闭案例,最后一个唯一一个应发送500。此外,如果您显示多个服务,如twitter status page,该怎么办?使用200

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