【问题标题】:Exception Handling Rest API as Internal Server Error(500)异常处理 Rest API 作为内部服务器错误 (500)
【发布时间】:2020-02-19 06:41:59
【问题描述】:

我有一个连接到第 3 方 API (B) 的内部 API (A)。

API B 可能会出现以下错误

  1. ERR001
  2. ERR002

API A 配置了错误消息,错误代码如下,

  1. ERR001 - 发生错误 1 ​​
  2. ERR002 - 发生错误 2

现在 API A 在出现任何错误/异常时返回下面

Response headers : HTTP/1.1 500 Internal Server Error
Response Body: {"time":"2000-04-..","errors":[{"code":"ERR001","message":"Error1 occurred"}],"details":"uri=/*","status":500}

设置错误状态 HTTP/1.1 500 Internal Server Error 是否更适合这种情况?

将已知错误代码包装为 500 状态是个好主意吗?

如果不是我应该设置哪个状态码,我可以保持相同的错误结构吗?

【问题讨论】:

    标签: java rest spring-boot exception


    【解决方案1】:

    是否设置错误状态 HTTP/1.1 500 Internal Server Error 是 更适合这种情况?

    我会说,是的

    因为在许多情况下(或者我认为),您不应该公开与第三方库通信时发生的错误。

    将已知错误代码包装为 500 状态是个好主意吗?

    这取决于。

    如果由于某些业务逻辑而在您的应用程序中发生错误。在这种情况下,您应该抛出一些清晰的错误代码和错误消息。

    但是如果由于某些 3rd 方库失败而发生错误,在这种情况下,您不应该抛出确切的错误消息。因为它可能是秘密信息。

    【讨论】:

    • so 500 Internal Server Error Status 是指此类错误?
    • IFAIK,它应该只在服务器端发生异常时发送,但您不确定出了什么问题,您不应该将整个股份跟踪发送给客户端。刚刚发送了 500 并且“服务器端出了点问题。”然后在你最后调试
    【解决方案2】:

    即使你什么都不做,你也会得到 500,如果服务器出现故障并且没有处理,那么服务器会自动抛出 500。最好返回其他状态代码来区分你的异常已经处理了,原因是如果你看到 500 你就会知道它是你没有处理的东西。

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 2016-01-10
      • 2017-06-29
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多