0

例如,我们有一个名为的实体ServiceConfig,其中包含 apointer到 aService和 a Professional。如果返回时不包含字段,则如下所示:

{
    'type': '__Pointer', 
    'className': 'Service', 
    'objectId': 'q92he840'
}

此时他们可以再次查询以检索该服务。但是,通常情况下他们需要Service名称。在这种情况下,每次都必须再次查询以获取服务是低效的。

选项:

  1. 自动返回Service. 在这种情况下,我们也应该自动返回Industryfor thatService以防他们需要...同样适用于所有人。似乎我们在这里过于频繁地返回数据。

  2. 允许他们传递includes指定要包含的实体的参数。格式是一个字符串数组,其中使用 a.可以允许它们包含子类。在这种情况下['Professional', 'Service.Industry']会起作用。

谁能确定为什么任何一种解决方案都会比其他解决方案更好?我觉得最后一个解决方案是最好的,但是在我见过的 API 中似乎并不常见。

4

1 回答 1

1

在发布初始版本之前,这是一个很好的 API 设计决策。您的两种方法都是有效的,这完全取决于您认为客户使用您的 API 的最常见方式。

您可以考虑以下几点:

  1. 您可能更喜欢不预先提供所有数据的第一种方法。有时它与效率有关,有时也与安全性有关,并确保仅根据需要和授权获取任何其他重要数据。
  2. 实施第二种方法将需要您的部分团队投入更多精力来设计/编码和测试 API。因此,您可能需要考虑要在 1.0 版中投入多少精力
  3. 例如,由于您有嵌套数据,因此第二种方法将为您提供很好的服务。事实上,有几个公共 API 可以做到这一点。例如,查看 LinkedIn 公共 API,尤其是facets部分,您可以在其中指定要返回的字段或附加信息。
  4. 查看您编写的一些客户端应用程序,如果您可以确定是否需要一些数据,那么它可以帮助设计返回数据。
  5. 最终监控 API 使用情况并对调用次数进行一些分析,调用的方法将为您提供下一步该做什么的良好输入。

如果我必须做出选择并且在努力方面有更多的余地,我会选择第二个选项,即使它一开始是一个简单的版本。

于 2013-02-20T04:10:18.047 回答