API管理和最佳做法

时间:2019-01-08 08:16:20

标签: api facebook-graph-api

试图获得专家意见和指导:

我们正在由客户探索一些RestAPI,以获取数据并在其末尾建立数据库。.有些使用sql,有些使用nosql数据存储。

我们应该如何设计端点?具有嵌入式引用对象的大型对象还是用于单独对象的单独端点?那参考呢?在查看架构时,是否有任何最佳做法要牢记?

示例: 电影有图像 电影有类似的电影 电影也有演员

此外,如何评估新端点是否有意义或将对象嵌入现有端点更好?

很好奇听到一些想法和推理。

1 个答案:

答案 0 :(得分:0)

一个基本问题是:您是否总是要索取全部数据(图像,类似电影,演员表...),还是想选择只获取部分数据?第二个问题是:数据集有多少重叠? (演员可以播放超过100部电影,而将其信息作为每部电影信息的一部分检索都是毫无意义的)

如果您始终想获得全部信息,那么请使用带有嵌入式引用对象的大型对象(只记得使用压缩)。如果网络带宽有问题,这种方法应该更有效。

如果要具有更大的灵活性,最好使用单独的端点。它将导致更多的网络流量。如果您选择这种方法,则应考虑使用某种缓存。

另一方面,您可以创建返回/movie的基本信息但返回/movie?include=images,cast/movie?include=all的扩展数据的混合。 但这将需要更多的开发工作。

也可能有第四种选择。您是否听说过GraphQL(https://graphql.org/)?它允许您定义要检索的数据。