使用HTTP状态代码反映Web服务请求的成功/失败?

时间:2010-03-22 22:20:34

标签: javascript ajax json http prototypejs

我正在实现一个返回JSON编码的有效负载的Web服务。如果服务调用失败 - 例如,由于参数无效 - 将返回JSON编码的错误。但是,我不确定在那种情况下应该返回什么HTTP状态代码。

一方面,似乎HTTP状态代码适用于HTTP:即使返回了应用程序错误,HTTP传输本身也成功,建议 200 OK 回应。

另一方面,RESTful方法似乎表明如果调用者试图发布到资源,并且请求的JSON参数无论如何都是无效的,那么 400 Bad Request 是合适的。

我在客户端使用Prototype,它有一个很好的机制,可以根据HTTP状态代码( onSuccess onFailure )自动调度到不同的回调,所以我很想使用状态代码来表示服务成功或失败,但我有兴趣听听是否有人对此事有共同惯例的意见或经验。

谢谢!

2 个答案:

答案 0 :(得分:12)

http状态代码仅用于指示应用程序响应的状态。 正如你所说,如果json参数在某种程度上无效,400状态代码 是一个合适的答案。

所以是的,使用http状态代码是一个非常好的主意。 de plus,状态代码很容易理解,因为它们不会从应用程序(Web服务)更改为另一个

答案 1 :(得分:3)

您确实应该使用正确的状态代码,因为它们完全是出于此目的,而不是指示HTTP请求本身的状态。通过这种方式,您可以在解析之前将响应重定向到相应的函数/分支,这将导致客户端的代码更加整洁。