在返回HTTP状态代码方面,无效的表单数据提交是否为“错误”或“确定”?

问题描述

我的特定用例是Rails应用程序,但是我不确定这有多重要。

这个问题不是很多“建议”,而是想知道是否在表单提交数据无效时返回哪种类型的HTTP状态代码方面存在行业共识。

对于我的jquery ajax调用,如果提交无效,则返回“确定”将要求:

    $.ajax(
    )
    .done( (data) => {
      if (data.error) {
        //was invalid
      } else {
        //was good
      }
    })
    .fail( (jqXHR) => {
      //this not called unless exception
    })

但是返回类似422 Unprocessable Entity这样的内容将允许:

    $.ajax(
    )
    .done( (data) => {
      //was good
    })
    .fail( (jqXHR) => {
      //do this for invalid data
    })

只是想站在历史的右边,大声笑。

解决方法

提及

表单提交数据无效

将导致4xx,因为它是客户端错误。 422表示数据以JSON格式发送,但给定的JSON格式不正确(存储的数据正确)。例如,可能是缺少昏迷,缺少了括号。在许多情况下,400更合适,您应该检查this answer,其中详细说明了400422 (和415