【问题标题】:HTTP Status code for indicating NON FATAL Server Error [closed]用于指示非致命服务器错误的 HTTP 状态代码 [关闭]
【发布时间】:2015-10-13 08:24:42
【问题描述】:

我正在构建 API。我正在使用 MVC 架构,我自己用 PHP 编写的迷你框架。

这是 API 是 RESTful,但也通过使用 NodeJS 的 Web Sockets 提供了一个同步的实时通道。因此,从技术上讲,一些服务可以通过标准 REST 接口访问,而其余的连续状态完整流可以通过 Web Sockets 访问。

因此,我在很多细粒度的场景中使用 HTTP 错误代码是非常必要的。

现在,我的问题很简单,指示服务器错误非致命的 HTTP 状态代码应该是什么?

501 用于服务器内部错误,但在这里我正在寻找无法满足请求的某些部分的情况。

感谢您的帮助。

关于实际场景的更多说明

服务器成功处理了请求,但是当请求完成后,服务器无法更新日志时会出现这种情况。因此,它是部分应验。

【问题讨论】:

  • 我认为您的场景过于具体,无法提供自己的错误代码,因此您可以制作自己的错误代码并在此项目中使用它吗?在建立有效错误代码时,您可以更新自己的代码以反映这一点吗?
  • 我就是这么做的。可惜!我正在努力使其尽可能合规并且对消费者也直观:(我选择了 522 al al Twitter 520's
  • 最终用户想要的只是解释通知,我认为您可以使用自定义标题来做到这一点?我知道这不是绝对符合要求,但似乎还没有任何确定的东西适合你正在寻找的东西。也许如果你能找到类似的情况(不管是不是人为的),然后通过 redbot.org 运行该服务器,看看 redbot.org 是如何处理它的?只是一个想法..
  • 在这种情况下你想如何使用你放出的标题?
  • 例如,假设用户登录并且无法在日志服务器(这是不同的服务器)上更新。从技术上讲,它应该是 200 OK,因为主要请求已被处理,但非必要操作的失败也会产生后果。因此,我在标题中返回一个带有 OPTIONS 的 522,建议一个 GET URI

标签: php apache rest http


【解决方案1】:

其实想一想,好像是你一口气定义了两种情况——

服务器成功处理了请求,但是当请求完成后,服务器无法更新日志时会出现这种情况。因此,它是部分应验。

这实际上似乎是两个不同的东西:

请求已成功处理,第 1 部分,所以这是一个标头 200(可以说),但是如果日志更新未完成(并且只有那个),则错误 5xx。如果您可以确定为什么日志没有被写入,然后返回一个特定的5xx错误。

如果您只想返回单个标头,那么即使请求已成功处理,如果日志未正确更新,则请求实际上并未成功处理,应返回 5xx 标头,因为 5xx 标头将优先超过 2xx 标头。如果您使用标头进行自己的重定向,那么您可以使用客户标头,因为您知道如何处理它。

【讨论】:

  • 伟大的思想都一样 :) 这正是我在评论中所说的。
  • 太棒了:)。 HTTP 标头非常单一。
猜你喜欢
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多