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

10

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

一方面,似乎HTTP状态代码是为HTTP而设的:即使返回应用程序错误,HTTP传输本身也是成功的,这表明 200 OK 响应可能更合适。

另一方面,RESTful的方法似乎表明,如果调用者试图发布资源,并且请求的JSON参数某种方式无效,则 400 Bad Request 是适当的。

我在客户端使用原型,它有一个很好的机制,可以根据HTTP状态代码自动分派到不同的回调函数( onSuccess onFailure ),因此我想使用状态代码指示服务成功或失败,但我很想听听其他人对这个问题的看法或经验。

谢谢!

2个回答

12

HTTP状态码仅用于指示应用程序响应的状态。

正如你所说,如果JSON参数无效,400状态代码适当的响应。

因此,使用HTTP状态码是一个真正好的主意。此外,状态码易于理解,因为它们不会从一个应用程序(Web服务)到另一个应用程序改变。


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接