【问题标题】:Why and how HTTP responses' status code matter?为什么以及如何 HTTP 响应的状态码很重要?
【发布时间】:2020-09-26 22:56:21
【问题描述】:

真正的问题;有很多 HTTP 状态代码,人们总是鼓励您在特定情况下使用正确的状态代码。

除了常见的(200404500),我发回给用户的 HTTP 状态代码真的很重要吗?

浏览器是否对每个状态码做不同的事情?

【问题讨论】:

  • 框架挑战:您是否有理由违反标准并使用错误的代码?或者你想做一些没有好处但可能有坏处的事情?
  • @JosephSible-ReinstateMonica 虽然遵循标准更安全(而且在我看来,一旦熟悉了上述标准,就可以更容易做出决定),但我相信,不知道你为什么使用某些东西,被称为货物崇拜编程.我认为 OP 只是想扩大他们对状态码当前现实应用的了解。

标签: http


【解决方案1】:

在很多情况下:不。只要您使用正确的错误类别(4xx、5xx),很多事情都会奏效。

使用更具体的 HTTP 状态码的目的有两个:

  1. 对于遇到它们的程序员来说,这可能是有用的文档。
  2. 它允许通用客户端以通用方式处理结果。

#2 的一些示例:

  • 401 错误可能允许通用客户端启动身份验证。
  • 429 错误可让通用客户端自动退避并在一段时间后重试请求。

优秀的客户可以完全独立于您的 API 做出这些类型的决定。它知道如何表现,因为这些都是商定的标准。

但是,如果您不使用可以处理任何这些高级功能的客户端,那么使用它们就不那么重要了。

所有这些状态代码都或多或少地考虑了这个想法;也许它可以让客户端自动解决错误,也许它会立即了解缓存是否应该被标记为过时,或者它可以向最终用户提供良好的默认反馈。

但是,大多数 API 和客户端只会使用其中的一小部分功能。所以我的一般建议是:

  1. 使用正确的状态码并没有什么坏处
  2. 让自己熟悉状态代码可以帮助您设计 API 以使用设计良好的通用功能,这种方式类似于其他人可能构建它的方式,而不是说:为您的特定用途重新发明轮子-案例。
  3. 如果您不知道(例如)是否应该返回 400、403、409、422 并且您看不到每个结果的实际好处,请不要担心。

如果您想了解更多信息,请查看近期 HTTP 标准的主要作者之一对此有何评论:https://www.mnot.net/blog/2017/05/11/status_codes

我还写了一系列关于每种状态的博客文章以及每种状态的实际用途:https://evertpot.com/http/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2015-08-12
    • 2011-06-02
    • 2021-01-28
    • 1970-01-01
    • 2016-04-10
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多