gpt4 book ai didi

http - API 何时应抛出 4xx 状态代码(错误),何时抛出 5xx?

转载 作者:可可西里 更新时间:2023-11-01 16:33:42 30 4
gpt4 key购买 nike

这是一个理论问题。我相信我知道答案,但我收到了相互矛盾的答案,所以我想我应该在这里问。

在 W3C 网站上它说:

Client Error 4xx The 4xx class of status code is intended for cases in which the client seems to have erred.

它还说

Server Error 5xx Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has erred or is incapable of performing the request.

我的意思是,如果一个请求在语法上是正确的,但在逻辑上是错误的,例如试图创建一个对象,该对象在特定属性上具有无效值,那么我的 API 应该抛出 5xx 错误,因为服务器 DID理解请求,但发现它是无效的。另一方面,有人告诉我这应该是一个 4xx 错误(特别是 400 Bad Request),因为逻辑错误发生在客户端,因为它首先发送了一个无效值。

那么,我应该报告什么错误代码?

最佳答案

当问题出在服务器端时会出现5xx错误。例如,当您使用服务器无法理解的方法或协议(protocol)发出请求时,代理未响应时等。简而言之:当服务器无法满足请求时。

在您的示例中,4xx 错误更合适,因为请求发起者是问题的根源。更具体地说,“422 Unprocessable Entity”错误是合适的,因为 RFC 4918状态:

The 422 (Unprocessable Entity) status code means the serverunderstands the content type of the request entity (hence a415(Unsupported Media Type) status code is inappropriate), and thesyntax of the request entity is correct (thus a 400 (Bad Request)status code is inappropriate) but was unable to process the containedinstructions.

出于各种原因,一些 API 设计者试图将他们自己限制在一组将要使用的 3 - 5 个状态代码。一般来说,这样做是为了减轻 API 用户的工作,这听起来不错,但有时这种理念可能会产生更大的影响。

例如,如果我向某个 API 发送请求以添加新评论,我希望获得一些授权,例如(但不限于):

  • 请求为 POST,否则返回 405 状态。
  • 如果添加了评论,我将收到 201 响应,并在正文中包含指向我的新评论的链接。

有时我会得到什么?

  • 如果请求方法不是 POST,我会收到 400 错误。
  • 如果请求是 POST,我将返回 200 状态,有时没有链接到我的新评论。

听起来很困惑?对我来说确实如此。

关于http - API 何时应抛出 4xx 状态代码(错误),何时抛出 5xx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043019/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com