api - 使用远程API时处理错误

标签 api rest error-handling

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

但是,此远程服务可能无法及时应答或引发错误。那么我的API应该抛出的最合乎逻辑的响应是什么?我正在特别考虑:

  • HTTP 500-但是,这不会给客户端任何信息
  • 带有Retry-After header 的
  • HTTP 503-客户端清楚地看到这是一个错误,以后可以再次查询
  • HTTP 200并返回空结果
  • HTTP 200并返回错误消息或类似的内容

  • ...或做完全不同的事情?

    最佳答案

    这完全取决于您希望API传达给客户端的内容。

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

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

    200 *空响应*:客户端被告知他的资源为空,并且一切正常,因此可能不会再回来,而资源可能不为空,并且稍后可用(有误导性)。

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

    我的建议:
    503

    关于api - 使用远程API时处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451724/

    相关文章:

    ruby-on-rails - Rails App HTTP 到 HTTPS 重定向不适用于公开的 API

    java - 从 restful java 客户端获取 JSON 输出

    error-handling - 专有处理/收集用户定义的错误

    java - 用于将应用程序拆分为前端/后端的意见/ header (不是用户/管理员,而是 ui/逻辑)

    java - 如何在javafx应用程序中实现themoviedb api

    java - 使用java使用json中的多个键获取键值

    php - 尝试使用Zend Mail发送电子邮件时遇到解析错误?为什么?

    无法仅释放一个动态分配的元素

    ios - 选择器没有已知的实例方法 'receivedItemsJSON'

    api - 用于检索对象集基数的 REST API