当只有部分数据可用时 HTTP 响应检索资源
HTTP response retrieving a resource when only partial data is available
如果已经有答案,我深表歉意。我找到了相关问题(例如)但不完全相同。
我正在构建一个 API,其中 return 的数据是从多个来源聚合而来的。有时,数据的某些关键部分不可用,必须让客户端知道并在响应中包含错误数据。
除了缺失字段的严重性之外,资源的其余部分有效且有用,可以被视为部分更新(例如,如果您只有权限查看资源的一部分)。
到目前为止,选项是
- return 200,将其视为部分资源,像处理任何其他数据一样处理应用程序中的错误数据字段
- return 207 强调它并不完全成功,但 207 并不是严格的 HTTP。
- return 500 并像在 200
上一样处理应用程序中成功 returned 的数据
我偏向于选项 1,但我并不完全相信。有没有明确的方法来处理这个问题?也许定义一个特定的 content-type
?
您在这里忽略了要点,因为 500 表示系统或通信链出现故障,并且由于返回了数据,因此必须假定资源存在并已找到。 OP 所指示的是部分结果,暗示与资源有关的复合数据。这必然超出了 http 的范围,http 已经通过成功的 200 完成了它的工作,除非你选择了一个部分数据错误的合同,因此是 40x。
如果已经有答案,我深表歉意。我找到了相关问题(例如)但不完全相同。
我正在构建一个 API,其中 return 的数据是从多个来源聚合而来的。有时,数据的某些关键部分不可用,必须让客户端知道并在响应中包含错误数据。
除了缺失字段的严重性之外,资源的其余部分有效且有用,可以被视为部分更新(例如,如果您只有权限查看资源的一部分)。
到目前为止,选项是
- return 200,将其视为部分资源,像处理任何其他数据一样处理应用程序中的错误数据字段
- return 207 强调它并不完全成功,但 207 并不是严格的 HTTP。
- return 500 并像在 200 上一样处理应用程序中成功 returned 的数据
我偏向于选项 1,但我并不完全相信。有没有明确的方法来处理这个问题?也许定义一个特定的 content-type
?
您在这里忽略了要点,因为 500 表示系统或通信链出现故障,并且由于返回了数据,因此必须假定资源存在并已找到。 OP 所指示的是部分结果,暗示与资源有关的复合数据。这必然超出了 http 的范围,http 已经通过成功的 200 完成了它的工作,除非你选择了一个部分数据错误的合同,因此是 40x。