【问题标题】:What is the meaning of 'semantic errors' or 'semantically erroneous' in 422 errors?422 错误中的“语义错误”或“语义错误”是什么意思?
【发布时间】:2017-08-28 22:22:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails http httprequest http-status-code-422


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      这将它与缺少权限(401403 更合适)以及可能表明服务器无法理解请求的通用 400 状态区分开来(即它是格式错误的请求)。

      【讨论】:

      • 如果格式正确,这不合逻辑吗?我是不是太会英语了?
      • 用语言类比来构建它,就像一个问题可以在语法上有效但在语义上无效(“这本书失业了吗?”),网络请求也可以。
      • 格式良好 = 符合您的 API 规范。这与有效逻辑完全不同
      • 我理解并被文学示例逗乐了,但我不明白它如何应用于技术
      • @gwcodes 因此它会应用 API 要求的所有内容,但是... [?]
      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2015-03-04
      相关资源
      最近更新 更多