ano*_*ard 28 javascript ajax json http http-status-codes
例如,jQuery在发出Ajax请求时有以下两个特定的回调:
success:当200/2xx状态代码与响应一起发送时触发.
error:当4xx,5xx等状态代码返回响应时触发.
如果用户尝试创建一个新的"Person"对象,我会在成功时发回新创建的对象的JSON表示,从而允许javascript访问新对象的必要唯一ID等.当然,这会被发送拥有200状态代码.
如果用户提交格式错误或无效的数据(例如,无效/不完整的"名称"字段),我想通过JSON发回验证错误消息.(我不明白为什么这会是一件坏事).
我的问题是:这样做,我应该发送200状态代码,因为我成功处理了他们的无效数据?因此,我将使用jQuery success回调,但只是检查错误...
或者,我应该使用4xx状态代码,也许是"错误请求",因为他们发送给我的数据无效?(因此,使用error回调来执行必要的客户端通知).
MPV*_*MPV 14
我同意400 Bad Request回复.
为了获得灵感,您可以了解Twitter(广泛使用的JSON服务)如何做到这一点:https: //dev.twitter.com/overview/api/response-codes
Code Text 描述200 OK - 成功! 304 Not Modified - 没有新的数据可以返回. 400 Bad Request - 请求无效或无法以其他方式提供.随附的错误消息将进一步解释.没有身份验证的请求被视为无效,并将产生此响应.401 Unauthorized - 身份验证凭据丢失或不正确.在其他情况下也会返回(例如,对API v1端点的所有调用都返回401).403 Forbidden - 请求已被理解,但已被拒绝或不允许访问.随附的错误消息将解释原因.由于更新限制而拒绝请求时使用此代码.返回此状态的其他原因与下表中的响应代码一起列出.404 Not Found - 请求的URI无效或请求的资源(例如用户)不存在.当请求的方法不支持请求的格式时,也会返回.406 Not Acceptable - 在请求中指定了无效格式时返回. 410 Gone - 这个资源消失了.用于指示API端点已关闭.420 Enhance Your Calm 当应用程序受到速率限制时返回. 422 Unprocessable Entity - 无法处理上传到POST帐户/ update_profile_banner的图像时返回. 429 Too Many Requests - 由于应用程序的资源限制已用尽而无法提供请求时返回.请参阅速率限制.500 Internal Server Error什么东西坏了.如果其他人遇到类似问题,请将您的请求的其他详细信息发布到开发人员论坛.502 Bad Gateway - Twitter正在关闭或正在升级. 503 Service Unavailable - Twitter服务器已启动,但请求超载.稍后再试.504 Gateway Timeout - Twitter服务器已启动,但由于我们的堆栈中存在某些故障,因此无法提供请求.稍后再试.