【问题标题】:API Management & Best PracticesAPI 管理和最佳实践
【发布时间】:2019-01-08 08:16:19
【问题描述】:

试图获得一些专家意见和方向:

我们的客户正在探索我们的一些 RestAPI,以获取数据并最终构建数据库。有些使用 sql,有些使用 nosql 数据存储。

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

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

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

很想听听一些想法和推理。

【问题讨论】:

    标签: api facebook-graph-api


    【解决方案1】:

    基本问题是:您是否总是要求提供完整的数据集(图像、类似电影、演员表等),或者您想选择只获取其中的一部分?第二个问题是:数据集有多少重叠? (演员可以在超过 100 部电影中演出,并且将他的信息作为每部电影信息的一部分进行检索是毫无意义的)

    如果您总是想获得所有内容,那么请使用嵌入了引用对象的大型对象(请记住使用压缩)。如果网络带宽有问题,这种方法应该更有效。

    如果您想获得更大的灵活性,最好选择单独的端点。这将导致更多的网络流量。如果你会选择这种方法,你应该考虑使用某种缓存。

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

    可能还有第四个选项。你听说过 GraphQL (https://graphql.org/) 吗?它允许定义您要检索的数据。

    【讨论】:

    • 感谢 Irek。是的,我已经探索过 GraphQL。我唯一难以理解的是,目前客户使用 API 在他们的终端构建数据库 - 因此资源特定的端点允许他们轮询不同的对象并更快地创建数据库。使用 GraphQL,因为有一个端点,我不确定它是否也能正常工作。更重要的是,如果我想向客户更新特定资源上的某些更新,我该如何使用 GraphQL。
    • 如果 graphQL 不适合您的需求,我会选择侧载模式。
    猜你喜欢
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2015-07-29
    • 2019-06-07
    • 2015-02-12
    相关资源
    最近更新 更多