如果某个资源在其他状态发生更改之前无法访问,哪个是正确的 HTTP 响应代码?

问题描述 投票:0回答:1

问题标题笼统地陈述了问题,但真实案例如下。

我的服务器具有以下 Web API:

  • 第一个允许设置机器日期时间的
  • 第二个用于在配置文件中写入所需时区
  • 第三个采用所需的时区,并将其应用到系统范围内

为了调用第一个 API,所需时区和系统时区应该相等:即,如果有人更改了所需时区但尚未在系统范围内应用它,则设置日期时间的调用应返回错误。

换句话说,正确的事件顺序应该是:

change desired timezone --> apply configuration --> set datetime

问题 如果用户尝试在所需时区尚未在系统范围内应用的状态下设置日期时间,则返回哪个最合适的 HTTP 错误代码?

您认为这是用户错误(4xx)还是服务器错误(5xx)?

409? 503?还有别的东西吗?我愿意阅读您的解释。

提前致谢

http http-error http-response-codes
1个回答
0
投票

2xx:成功 - 操作已成功接收、理解并接受
4xx:客户端错误 - 请求包含错误语法或无法满足
5xx:服务器错误 - 服务器无法满足明显有效的请求

我认为您应该返回 200。您的服务已收到消息并处理完毕。您可以返回基本的 HTML 消息或 JSON 字符串。例如。
{Success: true}, 或 {Success: false, ErrorReason: '尚未准备好,稍后再试'}

绝对不要使用 500。如果您想使用 400 代码,您可以使用以下选项:
423 锁定 [RFC4918]
424 依赖失败 [RFC4918]

[https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml][1] [https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses][2]

© www.soinside.com 2019 - 2024. All rights reserved.