【问题标题】:Industry practice for API response for partial failure and asking clients to retryAPI响应部分失败并要求客户端重试的行业实践
【发布时间】:2019-05-04 15:03:30
【问题描述】:

用例: 我正在设计一个更新 API,外部客户端可以在其中传递资源信息(以 JSON 格式)以保持不变。整个资源以较小资源的形式持久化到多个下游(并行)。因此,如果任何一个下游发生故障,我计划返回 5XX http 响应代码以确保客户端重试。但同时要确保客户端知道资源的哪一部分是成功的。

我查看了关于 HTTP 响应代码为 207 和 202 的其他类似问题(Q1Q2),但它们不适用于我的用例,因为这不是批处理请求,并且可以使用完整资源为外部客户划分较小的资源。据我了解,202 适用于我们能够接受请求并仍在处理的异步处理场景,而在我的情况下,我想确保客户端知道请求失败并且他应该重试。

正在考虑的方法 我计划将 HTTP 响应代码返回为 5XX,但同时将资源的一部分(JSON 格式)添加到成功的响应中。

我想知道上述方法是否被行业标准接受,是否有人解决了此类用例。

【问题讨论】:

  • 大部分前端库/框架都会将 5XX 视为错误,响应会落在错误处理代码中。因此,他们没有必要提供错误代码 5XX 的部分响应。

标签: rest http httpresponse api-design http-status-codes


【解决方案1】:

老实说,您已经谈到了子资源、部分成功以及能够重试失败的资源。所有这些功能都可以在 HTTP 中完美使用,并且如果您再采取一个步骤:将请求拆分为多个请求,它们将运行得非常好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2013-07-13
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多