【发布时间】:2021-12-10 09:36:35
【问题描述】:
我发现 Http 207 可用于批量插入/删除/...等操作,我们可能会插入多个项目,从业务角度来看,部分成功是可以的。
我想知道如果我们有 API Post 调用一些外部服务,是否同样适用?
示例业务场景:
我们有正在创建订单的 HttpPost 端点。
HttpPost:
/api/order/
现在让我们假设这个端点除了创建一个订单外,还会调用外部服务来打印该订单的标签,另一个通过 REST 向外部第 3 方系统发送某种确认。
现在在这种情况下,我们假设创建订单是此操作成功的必要条件,但打印和外部 REST 调用都可能返回错误消息。这可能超出了我们的控制范围。
现在从我读到的关于如何返回此信息的选项将是:
- Http 200 带有某种包含必要信息的对象。例如:
{ "isSucess": true, "isFailure": true, "erorMesage": "string" } - 使端点更加 RESTful,并将其分成 3 个将被调用的操作,但在这种情况下,这不适用(至少从我的角度来看),因为从业务角度来看,所有这些东西都是紧密耦合的,它们应该被绑定一起
- 返回 5xx 错误。 502,因为并非所有操作都成功并且存在一些内部问题,但是如果一个失败的操作是 502 和另一个 503,该怎么办
- 返回 207 错误并为每个操作提供正确的错误响应(订单创建:200,打印:502,外部第三方:502)
现在我想知道哪个最合适?我有点倾向于 502 错误或 207,因为我认为它们提供了有关系统实际状态的最多信息。
【问题讨论】:
标签: rest web-services http-status-codes