HTTP 403或406是否违反邮政要求?
简单的问题:
我有一个POST端点,它需要一些文本输入。 文本输入不得超过x个字符。 如果是这样,我会回复一条错误消息。
但是哪个HTTP状态码是正确的?
0.4.4 403禁止
服务器了解请求, 但拒绝履行它。 授权不起作用,请求不应重复。 [..]
10.4.7 406不可接受
根据请求中发送的接受头,由请求标识的资源只能够生成具有不可接受的内容特征的响应实体。
10.4.18 417期望失败
这个服务器无法满足期望请求头字段[...]中给出的期望 [..]
来源:w3.org
我想这是存在的问题。 很快,正确的HTTP代码是400 +可选的描述 。
您可以在此处签出更详细的答案:未通过验证的REST HTTP状态代码或无效重复
在我看来没有 。
您不应该使用HTTP状态代码作为某种验证/编程来获得特定结果。 4xx代码定义了请求和资源(资源未找到,请求未授权,禁止资源等)的问题,它们不应该用于确定请求体中的某些文本框值是否正确。
就我个人而言,我更喜欢返回HTTP 200状态码,只是返回一些消息(或者有时HTTP 500,因为验证会引发错误)。 无论如何,对于大多数用户而言,您应该在客户端使用某种JS验证来捕获错误,而不是从API中捕获错误。
如果你真的想要使用HTTP状态代码来处理某种应用逻辑,我会建议使用HTTP 400
因为它定义了下面的约束: The client SHOULD NOT repeat the request without modifications.
上一篇: HTTP 403 or 406 for post requirements violation?
下一篇: 400 vs 422 response to POST that references an unknown entity