要求客户端重做操作的适当HTTP状态代码是什么

时间:2014-11-19 10:08:29

标签: api http web http-status-codes

我的Web应用程序上有一个端点,它从客户端获取数据,一旦收集到足够的数据,就会执行一项操作。如果此操作的结果无效,我需要通知客户端必须重做此操作。

我可以在其中发送带有某种标志的回复,但如果已经为此目的存在状态代码,我宁愿使用它。

查看状态代码here的定义,似乎没有一个是合适的,但是,如果我只考虑名称而不是描述,状态代码 406不可接受听起来最合适。

1 个答案:

答案 0 :(得分:0)

406 Not Acceptable 不合适,因为状态代码用于内容协商:

  

406(Not Acceptable)状态代码表示目标      资源没有当前的表示形式      根据主动协商,用户代理可以接受      请求中收到的标头字段(第5.3节)和服务器      不愿意提供默认表示。    - https://tools.ietf.org/html/rfc7231#section-6.5.6

202接受似乎更好:

  

202(已接受)状态代码表示请求已被执行      接受处理,但处理尚未完成。    - https://tools.ietf.org/html/rfc7231#section-6.3.3

...但我不确定状态代码的用途是否符合你的目的:

  

202回复是故意不置可否的。其目的是为了      允许服务器接受某个其他进程的请求(也许是      没有的批处理过程,每天只运行一次      要求用户代理与服务器的连接保持不变      直到过程完成。    - https://tools.ietf.org/html/rfc7231#section-6.3.3

通常,http响应不会明确请求用户代理发送其他信息。我知道的唯一状态代码是 401 Unauthorized ,它会请求授权标头。您可能需要为自己的目的设计自己的状态代码。请咨询HTTP Working Group mailing list的人。