2

所以我有这种情况,可以说我正在制作两个 API;汽车 API 和 AutoService API。Car API 管理与汽车实体相关的资源。AutoService API 管理与为汽车提供维修服务的汽车服务零售实体相关的资源。

假设一个应用程序同时使用这两种 API。它为特定汽车实体创建汽车服务实体。因此,它使用 Car API 创建/编辑汽车资源,然后将其传递给 AutoService API 以为该特定汽车实体创建服务日志。这意味着 AutoService API 中的服务日志实体正在引用作为 API 外部资源的实体。

问题变成了,处理这种依赖关系的最佳实践是什么?我最初的想法是在服务实体中创建两个属性;外部所有者和外部所有者主机。externalOwner 实体将映射到汽车实体的 id。externalOwnerHost 将描述外部所有者的来源,比如说/auto/car。有了这个关联,为应用程序客户端创建一个约定,以自行确定如何访问给定 externalOwnerHost 的外部所有者实体。所以对于这个例子,应用程序应该足够聪明,知道使用GET /auto/car?fields=它,因为它知道资源的主机。这是最佳实践吗?你们有更好的想法吗?

4

1 回答 1

0

如果您需要在不了解依赖项的情况下调用依赖项,我会将用于调用实体的子 URL 保存在单个字段中(例如 /auto/car/12?fields=...)。

但我想知道这有多容易,因为 API 的使用者需要了解如何使用从 API 返回的数据。在您的示例中,这意味着 AutoService API 必须了解如何处理 Auto API 数据。

因此,我的最终建议取决于您的设计目的。如果这是为了显示,我会让护理汽车服务知道该 ID 并知道如何包含一个特定于汽车的控件。如果这是为了处理,我几乎会有一个 CarId 并让 AutoService API 准确了解如何获取数据以及如何在代码中使用它;不在数据库中。

于 2016-09-04T18:27:00.760 回答