当只有部分数据可用时 HTTP 响应检索资源

HTTP response retrieving a resource when only partial data is available

如果已经有答案,我深表歉意。我找到了相关问题(例如)但不完全相同。

我正在构建一个 API,其中 return 的数据是从多个来源聚合而来的。有时,数据的某些关键部分不可用,必须让客户端知道并在响应中包含错误数据。

除了缺失字段的严重性之外,资源的其余部分有效且有用,可以被视为部分更新(例如,如果您只有权限查看资源的一部分)。

到目前为止,选项是

  1. return 200,将其视为部分资源,像处理任何其他数据一样处理应用程序中的错误数据字段
  2. return 207 强调它并不完全成功,但 207 并不是严格的 HTTP。
  3. return 500 并像在 200
  4. 上一样处理应用程序中成功 returned 的数据

我偏向于选项 1,但我并不完全相信。有没有明确的方法来处理这个问题?也许定义一个特定的 content-type?

您在这里忽略了要点,因为 500 表示系统或通信链出现故障,并且由于返回了数据,因此必须假定资源存在并已找到。 OP 所指示的是部分结果,暗示与资源有关的复合数据。这必然超出了 http 的范围,http 已经通过成功的 200 完成了它的工作,除非你选择了一个部分数据错误的合同,因此是 40x。