我正在尝试确定基于主 ID 实现详细记录检索的最佳方法。
显然,您将为 master 和 detail 设置 API 控制器。
我考虑过的解决方案:
- 让 API 使用者使用 OData 获取由主 ID 过滤的所有详细信息。虽然我对这个解决方案没有意见,但我觉得把它放在 API 使用者身上有点不好,我觉得它应该由 API 在内部处理
- 违反仅具有 Get/Put/Post/Delete 方法的约定,并在细节控制器上创建“GetMastersDetails”操作并使其可通过路由访问。虽然这肯定会奏效,但我觉得这偏离了 Web API 的全部意义(在一定程度上)。
- 创建一个名为“MastersDetailsController”的第三个控制器,该控制器将具有基于具有不同可能返回类型的主 ID 的 Get:
- 这将返回详细信息 ID 列表,然后将用于调用详细信息控制器上的 Get 以获取这些实际详细信息
- 这将返回一个实际细节对象的列表。我不喜欢的是控制器返回的类型与其所基于的类型不同。