API状态页响应代码

问题描述 投票:0回答:1

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

我正在编写一个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

http http-headers http-status-codes
1个回答
1
投票

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

另外,您会注意到,无法区分服务已关闭状态页面已关闭的情况,最后一个是唯一应发送500 。 另外,如果您显示多个服务(如Twitter状态页)怎么办? 使用200

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

© www.soinside.com 2019 - 2024. All rights reserved.