当存在用户/表单验证错误时,我应该向AJAX请求发送什么响应/状态代码?

And*_*rew 6 ajax jquery http

我正在创建我的Web应用程序的一个功能,用户可以"编辑就地"记录并使用jQuery通过AJAX提交表单.

当某人"ajax编辑"一条记录并且他们提交有效数据的表单时,我发送一个200状态代码,触发jQuery AJAX Success函数,然后忽略响应体(因为它成功了,我不需要它) ),并折叠表格.

当存在表单验证错误时,我发送400状态代码以触发jQuery错误方法,并在请求正文中指定哪些字段未验证.

在之前的StackOverflow问题中,有人提到我发送400状态代码并使用响应正文"似乎很奇怪".我的方法不是最佳做法吗?在这种情况下,你会建议我做什么?

T.J*_*der 7

对我来说,HTTP状态代码用于HTTP层的信令,而不是应用层.我会说对正确提交的错误数据的适当响应(如果你看到我的意思)是带有应用程序层错误代码的200.我为此使用JSON.我的请求总是返回一条小JSON消息,该消息总是有一个标志,指示应用程序级别的成功/失败.我的ajax调用包装器知道这个并且适当地发送.

  • 我不同意.在REST样式的接口中,响应代码用于应用程序级信令.考虑一下您返回的CRUD操作,在POST上创建201 CREATED.在这种情况下,400不是发出错误格式化数据信号的坏方法. (3认同)

Jul*_*hke 5

使用 4xx 状态代码的负载就可以了。HTTP 规范中没有任何内容另有说明。

如果您想要比 400 更具体的东西,请查看422 Unprocessable Entity