使用远程API时处理错误

时间:2014-01-30 08:56:32

标签: api rest error-handling

我有一个RESTful API,可以调用另一个远程Web服务。一般情况下,我必须查询此远程服务以查找到我的特定API函数的每个请求,并且在我的代码中,我正在包装和/或修改结果的一部分。

但是,此远程服务可能无法及时应答或引发错误。那么我的API应该抛出的最合理的响应是什么?我特意想到:

  • HTTP 500 - 但这会让客户端无法了解正在发生的事情
  • 带有Retry-After标头的HTTP 503 - 然后客户端清楚地看到这是一个错误,可以稍后再次查询
  • HTTP 200并返回空结果
  • HTTP 200并返回错误消息或类似的内容

......或做一些完全不同的事情?

1 个答案:

答案 0 :(得分:1)

这一切都取决于您希望API传达给您的客户端。

500 :客户端无法获取他的资源,也不知道他是否应该用另一个请求轰炸您的服务器,但至少知道它可能存在

503 :客户端无法获取他的资源,但至少知道它可能存在,并且可以在X时间后重试。

200 * 空响应 *:客户端被告知他的资源是空的,一切正常,所以当资源可能不为空时可能不会回来一秒后可用(有点误导)。

200 * 错误消息 *:客户端被告知一切正常,但在您的上下文中收到错误消息。 (这是错误的,完全与自己相矛盾!)

我的建议: 执行 503