什么时候应该从REST应用返回HTTP状态代码500(内部服务器错误)客户端?
问题描述:
我已经看到了使用HTTP代码500为所有类型的错误情况一般错误代码(服务器错误,HTTP错误,代码例外,在DB没有找到预期创纪录,超时异常等)的人。但是我也看到和听到的,该代码500只能从应用服务器(JBoss的在我的情况)发起错误的情况下被使用,并且不应用本身即不属于代码异常或无效的密码或DB记录未找到的案例。所以,当我们应该从一个REST服务方法返回HTTP状态代码500?什么时候应该从REST应用返回HTTP状态代码500(内部服务器错误)客户端?
答
如HTTP规范描述:
响应一个当“5XX(服务器错误)类的状态代码表示该服务器知道它已经犯错或不能够执行所请求的方法的不同之处HEAD请求,服务器应该发送包含有关错误情况的解释的表示,以及它是否是临时或永久的条件。一种用户代理应该显示任何包括表示给用户。这些响应码适用于任何请求方法“。 - https://greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.6
请注意,从协议的角度来看,无论是应用服务器还是运行的应用服务器内部的都无所谓。