当部分批量更新失败时,我应该返回什么状态代码?

时间:2015-05-06 21:25:35

标签: rest http web

让我们说服务器响应执行批量创建某个实体的请求。让我们说我还决定这样做,如果由于服务器错误或用户错误而无法创建实体的一个实例,我仍然会创建其他实体实例。在这种情况下我应该返回什么? 201因为我在请求中创建了大部分实体?或A 4xx / 5xx,因为创建其中一个实体时出错?

3 个答案:

答案 0 :(得分:0)

在这种情况下,您可以返回一个multi-status (207)响应,在此您确认每个批处理条目的结果。这样,客户将完全了解结果。但是,这种HTTP状态涉及在客户端进行更复杂的处理。

答案 1 :(得分:0)

如果返回4xx代码,则表明整个请求已失败,并且服务器状态未更改。

如果请求的目的是“做一件或多件事情,有些可能会失败”,那么部分应用程序仍然是成功的,因此处于2XX范围内。

206不是一个好主意。这是专门针对使用Range的请求的,此处不是这种情况。

207 可以使用。您可能需要定义自定义格式,而不是基于默认格式的默认XML。我的投票可能只是去200

此外,请考虑仅执行许多请求。请求很便宜,为什么要将它们放在一起?现在,每个请求都可以拥有自己美丽,准确的状态代码。

答案 2 :(得分:-1)

我认为201不是一个好选择,因为它说"接受"这意味着一切都很好。但不是你的情况。也许206是一个好主意,这意味着"部分内容"根据{{​​3}}"服务器只提供部分资源......"