除了bug之外,500的HTTP状态代码还能代表什么



在使用我公司的web API以及其他公司的API时,我一直认为只有在出现实际的服务器错误时才应该返回500的响应代码。如果用户我在调用中出错,则存在4xx代码;而500表示我的调用没有任何问题,但服务器不知道该怎么办,甚至可能在处理我的请求时遇到异常。我坚持认为,500应该在服务器端记录并更正。

但我错了吗?500响应代码是否有适当的用途?特别是,在某些情况下,在不纠正导致500的条件的情况下持续返回500是有意义的吗?

换句话说,当我使用我们公司的API并获得500分时,我的反应(作为一名自动化开发人员(是";修复错误">

500有什么用途不涉及要修复的错误?

500状态或多或少是针对任何可能阻止服务器执行请求的服务器特定问题的包罗万象的状态。如果有特定于矿石的错误代码可用,服务器可能会使用这些错误代码,或者可能(出于各种原因(决定只使用catch-all500状态代码。

状态代码本身并不能说明错误是永久性的还是暂时性的,也不能说明是在什么情况下造成的。虽然服务器可能会提供额外的信息(例如错误的类型或可能的重试间隔(,但没有通用的标准来表达这一点。相反,应用程序可以选择适当的消息格式。

因此,虽然通常发送500状态是为了响应服务器端上无法以更合适的方式处理的未处理的异常情况,但根据应用程序的不同,也可能故意发送500状态。这里的具体语义取决于应用程序。