问题描述
我的特定用例是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,其中详细说明了400
,422
(和415
)。