我们正在构建一个新的 REST API。
我在争论错误代码 500(内部服务器错误)不应该被返回。
现在,当然,如果您知道客户端的参数有误或有其他问题,您就可以控制一切并可以返回一些适当的错误代码(例如 422)。
因此,如果发生意外错误,服务器可以:
- 不捕获意外错误以致于 500 冒泡到客户端
- 捕获任何意外错误并返回一些表示“意外情况”的错误代码(老实说,我找不到任何此类错误代码!)
还有其他选择吗?
最佳答案
这是服务器错误,不是客户端错误。如果服务器错误不返回给客户端,就不会为它们创建一个完整的状态代码类(即 5xx)。
您无法隐藏您犯了编程错误或您依赖的某些服务不可用的事实,这当然不是客户的错。在这些情况下,返回 5xx 系列之外的任何其他范围的代码都是没有意义的。
RFC 7231 mentions in section 6.6. Server Error 5xx :
The 5xx (Server Error) class of status code indicates that the server is aware that it has erred or is incapable of performing the requested method.
正是如此。代码“500 Internal Server Error”在不应向客户端公开的意义上没有任何“内部”内容。
关于api - REST API 错误代码 500 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27826491/