问题标签 [http-status-code-200]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
216 浏览

rest - api rest中2xx和4xx状态码之间的困境

我觉得这个问题不是小事,所以想详细表达一下

领域:

我有一个端点(api rest),它接收我想要阻止的约会的日期和时间(稍后将被保留)。操作简单,收到日期和时间后,将其封锁,使其他客户无法在同一天和同一时间预约,而封锁预约的客户,完成联系信息。

到目前为止,非常简单。当两个不同的用户在他们的浏览器中选择相同的日期和时间并且同时触发两个请求时,问题就开始了。正如我们已经知道的,您不能在同一日期和同一时间两次阻止约会,因此应用程序将失败(尽管此失败得到了适当的控制)。

简而言之,两个用户尝试在同一日期和时间阻止约会,只有最先处理的请求才会成功。对于成功阻止约会的用户,答案很明确:200 OK 状态。问题是,返回给第二个用户的http对应的是哪个状态码?

评论:

最近在工作中,我遇到了这个困境,为此我与一位同事进行了激烈的争论。从那以后,我开始努力研究,并咨询了几个在这个领域有多年经验的人,以便能够得出一个结论。

  • 2xx:一半的人回答说州代码应该是 2xx。为什么?首先,因为请求是精心制定的(主要是参数,写得正确)所以它不会对应客户端错误(4xx),另一方面,它不是服务器的意外错误(500),因为它由业务逻辑本身适当控制。由于查询已正确完成,它应该发送一个 2xx 状态(更准确地说是 200)表示请求成功,并在正文上显示一条消息,指示操作的“状态”(无法阻止约会)。
  • 4xx:我的立场(以及其他 50% 的咨询者的立场)是,可以看出,请求失败是因为无法完成所需的操作。返回 200 OK(表示一切顺利)和描述发生的错误或情况的消息(在某​​种程度上,这与我相矛盾)似乎完全不合逻辑。发生错误时,只有两种可能有罪:客户端和服务器。在这种情况下,在我看来服务器不是,因为它不会意外失败,但该业务规则是经过深思熟虑的,并且故意失败(因此它不会是 5xx)。当尝试对同一资源执行两次相同的操作时,一切似乎都符合客户端错误,也许是语义错误。因此,我的观点是错误 400 会根据情况进行调整,

对于这种情况,什么应该是合适的选择?

谢谢!

0 投票
1 回答
229 浏览

laravel - Vue 路由器历史模式结合 laravel catch all 重定向 404 标头提供 200 标头状态码

我在 Laravel 后端有一个 Vue 项目,对它来说 SEO 很重要。使用我当前的设置,我将所有传入请求重定向到我的 Vue 应用程序。在我的 Vue 应用程序中,我使用 Vue Router 处理路由。

在我的设置中,无法识别的页面被定向到我喜欢的组件(404 组件),但浏览器会收到 200 状态代码。我对此的问题:

如何为浏览器提供正确的 404 状态码?


我的代码摘要:

从 Laravel(web.php 文件)中将所有内容重定向到我的 Vue 应用程序:

在我的 Vue 路线中,我捕获了所有无法识别的路径以显示我的“404 组件”:

为了完整我的 Vue 应用程序中的路由器设置:

0 投票
4 回答
579 浏览

rest - 从 REST 端点返回的空列表结果的 HTTP 200(不是 404)状态

请给我一些官方规范的例子,或者可以证明我的业务合作伙伴从 REST 端点返回一个空列表时的可信建议,HTTP 状态应该是 200,而不是 404。对我来说,RFC-2616 是显而易见的,但也是通用的并且不讨论结果为空集的情况。我正在寻找强有力的论据进行讨论。

亲切的问候,卡米尔。

0 投票
0 回答
365 浏览

redirect - Laravel 重定向到带有参数的命名路由返回状态 200

我有以下带有参数的命名路由,我想从发布请求重定向到:

我处理发布请求的控制器:

我得到的回应是:

在网络选项卡中,我在Name下看到90,这显然代表 id,只有当我将鼠标悬停在上面时,我才会看到完整的 URL http://team-management-tool.test/view-project-team/90

这很奇怪,因为我使用重定向的方式似乎是正确的,不知道那可能是什么问题?

0 投票
2 回答
3111 浏览

ajax - 正常看到状态 204 然后状态 200?

我正在 chrome 的网络选项卡中查看我的 ajax 请求,我注意到我所做的每个 ajax 请求都发生了两次。

第一个是 204,然后是 200。我的 ajax 调用只被击中一次,所以我不确定为什么有 2 个。

编辑

所以它似乎与 Cors 有关,我刚刚设置为星号 (*) 进行测试。

我想我能做的事情并不多,不让它做 2 个请求,但真正让我明白的是为什么它需要这么长时间,我查看 google chrome 网络,在我的页面上,这些 204 花了 110 毫秒到 1.97 秒。

0 投票
1 回答
3951 浏览

c# - 如果没有找到要处理的内容,则返回 http-status-code 200 或 204

在 web-API 中,客户端使用参数发出获取请求,以处理某些内容并从文件系统获取数据。通过 API 请求的参数是一个文件夹路径。如果 API 找到该路径,它正在处理内部资源上的某些内容并返回带有 Http-200 状态码的处理后的内容。太棒了。

如果文件夹存在并且在处理路径中缺少的某些内容时怎么办。API 应该返回带有空内容的 Http-200 还是带有/不带有响应消息的 Http-204?

0 投票
0 回答
156 浏览

ruby-on-rails - Rails 默认行为:为什么 Rails 默认不生成不同的 Etag 或返回 304 Not Modified?

我正在检查 Rails 响应。没有故意设置从服务器返回的 http 标头。

响应包括Cache-Control: max-age=0, private, must-revalidateEtag。无论我提出多少次相同的请求或在多短的时间内,响应都是 200。

我的问题是:

  1. 如果我没有在响应中设置stale?or ,如何生成 Etag?fresh_when此端点的 Etag 始终相同。
  2. 不管 Etag 是如何生成的,如果它始终相同,为什么服务器没有注意到 Etag 始终相同并以 304 而不是 200 响应?

谢谢

0 投票
0 回答
490 浏览

node.js - 如何更改 NodeJS 中响应的状态码?

我正在 NodeJS 中开发一个 API,它将我的客户的请求正文向巴西邮件服务的 API 发出另一个请求,然后我以特定格式向我的客户提供响应。问题是:当我的客户输入的邮政编码中没有交付时,我从邮件 API(以及我给客户的那个)获得的状态码是 200。但我需要一个状态码400. NodeJS中可以更改状态码吗?

下面的代码:

0 投票
1 回答
754 浏览

flutter - 检查 Instagram 用户名是否存在

我正在尝试验证用户应输入的 Instagram 用户名。我想知道该用户名的帐户是否存在。我试过这样:

我还看了一个类似的问题:检查 instagram 帐户名是否可用

答案中提到的链接:(https://www.instagram.com/username/?__a=1)在浏览器中工作正常

(如果用户名存在则显示账户的所有信息,如果不存在则显示两个空括号)

但在我的代码中我没有statusCode 404得到statusCode 200。我也无法捕捉到错误。这与我的代码中的链接相同(https://www.instagram.com/$username/),我明白了statusCode 200。有没有我还没有考虑过的不同方式?

提前感谢您的回答!

0 投票
1 回答
59 浏览

c# - 如何获取 httpStatusCode 200 的描述?

我在 Visual Studio 中有以下代码

我以这种方式编写代码以获得 200 状态代码Console.WriteLine((int)response.StatusCode) 什么代码可以从 httpstatuscode 描述中获得更多信息,而不仅仅是“OK”或“200”......