我应该什么时候从 REST 应用程序向客户端返回 HTTP 状态代码 500(内部服务器错误)?

Pra*_*tap 10 rest http-status-codes http-response-codes http-status-code-500 internal-server-error

我见过有人使用 HTTP 代码 500 作为所有类型错误情况的通用错误代码(服务器错误、http 错误、代码异常、在 DB 中找不到预期记录、超时异常等)。但是,我也读过并听说此代码 500 仅应在源自应用程序服务器(在我的情况下为 JBoss)的错误的情况下使用,而不是应用程序本身,即不适用于代码异常或无效密码或 DB-record-not - 发现的情况。那么,我们什么时候应该从 REST 服务方法返回 HTTP 状态代码 500?

Jul*_*hke 5

正如 HTTP 规范中所述:

5xx(服务器错误)状态代码类表示服务器意识到它已出错或无法执行请求的方法。除非响应 HEAD 请求,否则服务器应该发送包含错误情况解释的表示,以及它是临时情况还是永久情况。用户代理应该向用户显示任何包含的表示。这些响应代码适用于任何请求方法。

原文: https://greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.6

请注意,从协议的角度来看,无论是应用程序服务器还是应用程序服务器内部运行的东西都无关紧要。