试图获得专家意见和指导:
我们正在由客户探索一些RestAPI,以获取数据并在其末尾建立数据库。.有些使用sql,有些使用nosql数据存储。
我们应该如何设计端点?具有嵌入式引用对象的大型对象还是用于单独对象的单独端点?那参考呢?在查看架构时,是否有任何最佳做法要牢记?
示例: 电影有图像 电影有类似的电影 电影也有演员
此外,如何评估新端点是否有意义或将对象嵌入现有端点更好?
很好奇听到一些想法和推理。
答案 0 :(得分:0)
一个基本问题是:您是否总是要索取全部数据(图像,类似电影,演员表...),还是想选择只获取部分数据?第二个问题是:数据集有多少重叠? (演员可以播放超过100部电影,而将其信息作为每部电影信息的一部分检索都是毫无意义的)
如果您始终想获得全部信息,那么请使用带有嵌入式引用对象的大型对象(只记得使用压缩)。如果网络带宽有问题,这种方法应该更有效。
如果要具有更大的灵活性,最好使用单独的端点。它将导致更多的网络流量。如果您选择这种方法,则应考虑使用某种缓存。
另一方面,您可以创建返回/movie
的基本信息但返回/movie?include=images,cast
和/movie?include=all
的扩展数据的混合。
但这将需要更多的开发工作。
也可能有第四种选择。您是否听说过GraphQL(https://graphql.org/)?它允许您定义要检索的数据。