我正在浏览一个高级的、与安全相关的 Ruby on Rails 教程,它正在谈论 422 HTTP 响应,因为“客户端提交的请求格式正确,但语义无效”。我还看到后一部分呈现为“语义错误”或“语义错误”。
在给出的示例中,这是由于 Rails 检查了真实性令牌,但我明显感觉到 HTTP 响应还有很多其他内容。
我将特别感谢已建立的社区成员对“语义上无效/错误/错误”的含义的规范定义。使请求格式良好但在语义上无效的一般规则是什么?
我正在浏览一个高级的、与安全相关的 Ruby on Rails 教程,它正在谈论 422 HTTP 响应,因为“客户端提交的请求格式正确,但语义无效”。我还看到后一部分呈现为“语义错误”或“语义错误”。
在给出的示例中,这是由于 Rails 检查了真实性令牌,但我明显感觉到 HTTP 响应还有很多其他内容。
我将特别感谢已建立的社区成员对“语义上无效/错误/错误”的含义的规范定义。使请求格式良好但在语义上无效的一般规则是什么?
给出一个422
(不可处理实体)状态码,表示服务器理解请求,但无法处理逻辑。
它可用于指示逻辑问题(例如,您要求过滤的日期范围无效)和验证问题(例如,您没有指定标题 - 这是必需的)。在这种情况下,“语义错误”仅表示“逻辑错误”。
这将其与缺少权限(401
或403
更合适)之类的事情区分开来,也与400
可能表明服务器无法理解请求的一般状态(即,它是格式错误的请求)区分开来。
通过邮递员将资源发布到数据库时,我遇到了这个特殊的语义错误。
在对我发送的有效负载进行彻底检查后,我发现 Json 有效负载的格式不符合数据库模式所期望的正确格式。例如,我的有效负载中有一个值作为字符串而不是字符串数组。后来它以 201 响应成功发布。