编写API的好处:自动包含嵌套对象,而不是完全包含,或者提供一个参数来指定要包含的对象?
例如,我们有一个名为编写API的好处:自动包含嵌套对象,而不是完全包含,或者提供一个参数来指定要包含的对象?,api,relation,nested-includes,Api,Relation,Nested Includes,例如,我们有一个名为ServiceConfig的实体,它包含一个指向服务的指针和一个专业的。如果返回时不包括字段,则如下所示: { 'type': '__Pointer', 'className': 'Service', 'objectId': 'q92he840' } 此时,他们可以再次查询以检索该服务。但是,他们通常需要服务名称。在这种情况下,每次都必须再次查询才能获得服务是低效的 选项: 自动返回服务。在这种情况下,我们应该自动返回该服务的行业,以防他们需要。
ServiceConfig
的实体,它包含一个指向服务的指针
和一个专业的。如果返回时不包括字段,则如下所示:
{
'type': '__Pointer',
'className': 'Service',
'objectId': 'q92he840'
}
此时,他们可以再次查询以检索该服务。但是,他们通常需要服务
名称。在这种情况下,每次都必须再次查询才能获得服务是低效的
选项:
自动返回服务
。在这种情况下,我们应该自动返回该服务的行业
,以防他们需要。。。这同样适用于所有人。似乎我们在这里返回数据太频繁了
允许他们传递一个指定要包含哪些实体的includes
参数。Format是一个字符串数组,使用
可以允许它们包含子类。在这种情况下,['Professional','Service.Industry']
将起作用
谁能确定为什么任何一种解决方案都比其他解决方案更好?我觉得最后一个解决方案是最好的,但是在我所看到的API中,这样做似乎并不常见。在发布初始版本之前,这是一个很好的API设计决策。这两种方法都是有效的,这完全取决于您认为客户机使用API的最常见方式
您可以考虑以下几点:
您可能更喜欢第一种方法,即不预先提供所有数据。有时,这关系到效率,有时也关系到安全性,并确保仅在需要时根据授权获取任何其他重要数据
实现第二种方法需要您的团队付出更多的努力来设计/编写和测试API。因此,你可能想考虑你想在1版 中投入多少精力。
例如,由于您有嵌套数据,第二种方法将很好地为您服务。事实上,有几个公共API可以做到这一点。例如,请查看LinkedIn公共API,特别是部分,其中可以指定要返回的字段或其他信息
看看您编写的一些客户机应用程序,如果您能够确定某些数据是预先需要的,那么它可以帮助设计返回数据李>
最终,监视API使用情况并对调用的数量进行一些分析,调用的方法将为您下一步的操作提供良好的输入
如果我必须做出选择,并且在努力方面有更多的余地,我会选择第二个选项,即使它最初是一个简单的版本