HTTP 501适用于未实现的API吗?

cop*_*pro 8 http http-error

HTTP 501错误是否适合服务器计划支持的功能,但目前不支持,例如API的特定情况?例如,如果我正在设计一个网络邮件应用程序并且我还无法删除带有附件的电子邮件,那么如果我在带有附件的电子邮件上收到DELETE请求,是否适合给予501?

RFC表示它应该用于未知方法(例如PARTY请求),但不清楚它是否应该用于其他功能.

Cod*_*ter 9

适当

:

6.6.2.501未实施

501(未实现)状态代码表示服务器不支持完成请求所需的功能.当服务器无法识别请求方法并且无法为任何资源支持时,这是适当的响应.

使用405:

6.5.5.405方法不允许

405(方法不允许)状态代码表示请求行中接收的方法由源服务器知道但目标资源不支持.源服务器必须在405响应中生成Allow头字段,该字段包含目标资源当前支持的方法的列表.

  • “当服务器无法识别请求方法并且无法支持任何资源时,这是适当的响应”指定了一种适当的情况;它并不声称包含所有可能合适的情况。因此,尚不清楚这是该错误代码的唯一预期或有效用途。从这个角度来看,“服务器不支持满足请求所需的功能”是重要的部分,第二部分是通常使用它的示例。 (4认同)
  • 我真的不喜欢_“哪个 HTTP 动词或状态代码用于任意情况 X”_ 问题。只需返回 400 并在 JSON 中包含详细报告。 (3认同)
  • _"你不应该发送"_,即客户端错误,保证4xx._"我想处理它,但不知道如何(或发生错误)"_,即服务器错误,保证5xx. (3认同)
  • 如果该资源仅部分支持该方法,该怎么办?比方说,一个复杂的POST例程,其中一部分未实现.服务器可以处理不需要该部分的任何请求,但如果有,则必须返回错误.另外,我知道你引用的关于501的句子,但是不明确的是这是501的唯一*有效用例. (2认同)
  • @CodeCaster 与 HTTP 动词保持一致的优点是客户端可以在不同类型的请求中以统一的方式合理地响应响应,而不必对响应主体进行额外的特定于操作的解析以响应更多的请求。通用错误代码。 (2认同)
  • 我不会定期投反对票,但这一次我不得不这样做。405 是更不恰当的响应。这不是客户端错误,因此除非您不想因某种原因透露您尚未完全完成实现,否则您不应该重新运行 405。我还同意 @M.Justin 的观点,即 501 示例的措辞是未表示为详尽无遗。500 部分开头为:“5xx(服务器错误)状态代码类表示服务器意识到它已出错或无法执行请求的方法。” 这正是所描述的情况。 (2认同)