REST请求响应和内部服务器错误

时间:2014-05-05 06:40:43

标签: java http rest

假设在处理REST请求时,服务器无法满足请求并抛出一些Java异常,我应该在请求Response中填充整个堆栈跟踪吗?

告诉用户知道服务器端有错误的标准是什么?

3 个答案:

答案 0 :(得分:3)

这取决于错误的类型。

如果错误是由客户端错误引起的(客户端没有指定正确的参数或类似的东西),请发送HTTP 4XX状态代码(最合适的一个)

如果错误是由逻辑错误或服务器端的错误引起的,请发送HTTP 500。

出于安全原因,除非您正在调试,否则切勿将堆栈跟踪发送到客户端。

答案 1 :(得分:1)

返回响应,并在正文中描述错误消息,&将状态代码设置为500

@morgano说得好,请检查您的请求,因为如果您正确实施了服务器,正确处理异常,最可能的错误来源是客户端。许多开发人员只在客户端上执行验证,但它也是在服务器上的客户端上复制大部分或全部验证的原始版本。

&安培;当然,不显示完整的堆栈跟踪,您的客户端系统应该将您的用户转发到非常精美的用户界面,并提供有关错误的简单1/2线描述

答案 2 :(得分:1)

Java堆栈跟踪是您的服务客户端(通常)不感兴趣的东西,明确的错误消息在99%的情况下更有帮助。 您可以在返回的错误消息中添加相关ID,并在具有相关ID的服务器上使用stacktrace记录异常。

如果有疑问,请问问自己:如果我打电话给github,推特或任何API,我想恢复失败。

他们的主要想法是服务客户端可以是内部客户端,外部客户端,已知客户端或未知客户端,并且明确的错误消息以及将异常跟踪回日志的方法是解决此问题的更好方法。对客户的开发者更有帮助。

[更新] 阅读其他回复并重新阅读您的问题,是的,包括匹配的HTTP结果代码(例如500,4xx等)。我以为你已经这样做了。