【发布时间】:2016-04-15 17:08:30
【问题描述】:
我有一个 RESTful Web 服务,它需要接受最终用户许可协议 (EULA) 才能使用。
如果 EULA(尚未)被接受,哪个 HTTP 状态代码最适合 Web 服务返回?
目前我看到以下可能性(我目前最喜欢的粗体字):
- 403 禁止
- 412 前置条件失败
- 417 预期失败
- 423 锁定
- 需要428个前置条件#
- 451 因法律原因不可用
【问题讨论】:
-
所以,随便选一个。你有什么问题? :) 要选择“最合适”的状态代码,您可以列出您可以发送它们的所有条件,并交叉任何要求与您的方案不匹配的列表。
-
我看到有几票接近。显然,这被认为是一个让我感到惊讶的意见驱动问题——这真的只是我个人的品味吗?在所有 HTTP 状态代码都标准化之后,如果我选择例如是否可以? 404 表示 EULA 问题,即使每个人看到该状态代码都会立即认为请求的资源不存在?
-
问题不是基于观点的,而是如目前所说,它吸引的是基于观点的答案,而不是基于事实的答案。这是关于“对于任意情况 X 使用哪个 HTTP 状态代码” 的问题所固有的,因为人们不会费心阅读 RFC。 您 应该能够做到这一点,正如我在之前的评论中指出的那样。列出候选代码并消除任何与您的情况不匹配的代码。
-
我也喜欢 451,谢谢,这是我最喜欢的 http 状态码 :) 但是,我认为 403 更合适。根据 RFC 7725
The use of the 451 status code implies neither the existence nor nonexistence of the resource named in the request. That is to say, it is possible that if the legal demands were removed, a request for the resource still might not succeed.tools.ietf.org/html/rfc7725 换句话说,它更像是一个 404 “这不存在”,而您真正想说的是“它在那里,但我不会让你看到它”。
标签: rest http http-status-codes