Rest API响应部分故障并请求客户端重试的行业惯例
用例: 我正在设计一个更新API,外部客户端可以在其中传递资源信息(JSON格式)以持久化。整个资源以较小资源的形式持久化到多个下游(并行)。因此,如果任何下游出现故障,我计划返回5XX http响应代码以确保客户端重试。但同时要确保客户机知道资源的哪一部分是成功的 我研究了关于HTTP响应代码207和202的其他类似问题(,),但它们不适用于我的用例,因为这不是一个批处理请求,整个资源可以划分为外部客户端的较小资源。据我所知,202适用于异步处理场景,在这种场景中,我们能够接受请求并且仍在处理,而在我的情况下,我希望确保客户机知道请求失败,他应该重试 正在考虑的方法 我计划将HTTP响应代码返回为5XX,但同时会将资源的一部分(JSON格式)添加到成功的响应中Rest API响应部分故障并请求客户端重试的行业惯例,rest,http,httpresponse,api-design,http-status-codes,Rest,Http,Httpresponse,Api Design,Http Status Codes,用例: 我正在设计一个更新API,外部客户端可以在其中传递资源信息(JSON格式)以持久化。整个资源以较小资源的形式持久化到多个下游(并行)。因此,如果任何下游出现故障,我计划返回5XX http响应代码以确保客户端重试。但同时要确保客户机知道资源的哪一部分是成功的 我研究了关于HTTP响应代码207和202的其他类似问题(,),但它们不适用于我的用例,因为这不是一个批处理请求,整个资源可以划分为外部客户端的较小资源。据我所知,202适用于异步处理场景,在这种场景中,我们能够接受请求并且仍在处理
我想知道上述方法是否被行业标准所接受,是否有人已经解决了此类用例。老实说,您已经谈到了子资源、部分成功以及能够重试失败的方法。所有这些特性在HTTP中都是完全可用的,如果您只需再多做一步:将请求拆分为多个请求,则将工作得非常好。大多数前端库/框架将考虑5xx作为错误,响应将在错误处理代码中出现。因此,他们没有必要提供错误代码为5XX的部分响应。