【问题标题】:Http status code to send if server state invalid?如果服务器状态无效,则发送 Http 状态码?
【发布时间】:2016-08-25 01:22:04
【问题描述】:

我正在编写一个 REST 服务,一些推送请求只能在特定的时间窗口内工作。例如在活跃的工作时间。在这些时间之外,服务器将发送错误。

我查看了可用的 HTTP 状态代码,但不确定哪个最适合用于“无效服务器状态”或同等情况。我正在考虑 400(错误请求)或 422(无法处理的实体)?

对于 422,我拥有的 definition 是“请求格式正确,但由于语义错误而无法遵循。”并想知道这是否真的是最适用的案例?

【问题讨论】:

  • 如果是服务器端问题,为什么不使用 5xx 服务器错误代码之一?
  • 一般情况下,我会在出现问题时看到 5xx 代码。技术上没有任何问题,而是客户要求在操作之前通过可以验证的参数做一些无法完成的事情。客户可以在单独的请求中询问可接受的工作时间。

标签: http http-status


【解决方案1】:

400 Bad Request 看起来是对我的正确回应。这绝对是客户端错误,但请求本身没有问题;只是请求的时间。如果响应正文包含一些额外的信息来说明这一点(按照“我们的办公室已关闭。请在格林威治标准时间周一至周五上午 9 点到下午 5 点之间提出请求。”),那么您已经成功使用以适当的方式简单而常见的响应类型。这构成了一个好的 API。

作为附加说明;我会说 422 不太正确的原因是请求的含义很清楚。这只是时间问题,没有语义错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多