5

我正在浏览一个高级的、与安全相关的 Ruby on Rails 教程,它正在谈论 422 HTTP 响应,因为“客户端提交的请求格式正确,但语义无效”。我还看到后一部分呈现为“语义错误”或“语义错误”。

在给出的示例中,这是由于 Rails 检查了真实性令牌,但我明显感觉到 HTTP 响应还有很多其他内容。

我将特别感谢已建立的社区成员对“语义上无效/错误/错误”的含义的规范定义。使请求格式良好但在语义上无效的一般规则是什么?

4

2 回答 2

4

给出一个422(不可处理实体)状态码,表示服务器理解请求,但无法处理逻辑

它可用于指示逻辑问题(例如,您要求过滤的日期范围无效)和验证问题(例如,您没有指定标题 - 这是必需的)。在这种情况下,“语义错误”仅表示“逻辑错误”。

这将其与缺少权限(401403更合适)之类的事情区分开来,也与400可能表明服务器无法理解请求的一般状态(即,它是格​​式错误的请求)区分开来。

于 2017-04-03T22:37:29.237 回答
1

通过邮递员将资源发布到数据库时,我遇到了这个特殊的语义错误。

在对我发送的有效负载进行彻底检查后,我发现 Json 有效负载的格式不符合数据库模式所期望的正确格式。例如,我的有效负载中有一个值作为字符串而不是字符串数组。后来它以 201 响应成功发布。

于 2020-04-23T06:49:08.340 回答