Graphql 什么是过度抓取或不足抓取?

Graphql 什么是过度抓取或不足抓取?,graphql,fetching-strategy,Graphql,Fetching Strategy,我有时会玩graphQL。在graphQL之前,我们通常使用RESTAPI。许多开发人员表示,graphQL修复了其余部分的一些问题。(例如,取数过多和取数不足)。我不明白这个术语 有人能解释一下在这种情况下什么是过度抓取和不足抓取吗 谢谢,过度抓取就是抓取了太多的数据,这意味着响应中有您不使用的数据 在对端点的调用中,获取不足的数据,迫使您调用第二个端点 在这两种情况下,它们都是性能问题:要么使用的带宽超过了应该使用的带宽,要么发出的HTTP请求超过了应该使用的带宽 在一个完美的世界里,这些问

我有时会玩graphQL。在graphQL之前,我们通常使用RESTAPI。许多开发人员表示,graphQL修复了其余部分的一些问题。(例如,取数过多和取数不足)。我不明白这个术语

有人能解释一下在这种情况下什么是过度抓取和不足抓取吗


谢谢,

过度抓取就是抓取了太多的数据,这意味着响应中有您不使用的数据

在对端点的调用中,获取不足的数据,迫使您调用第二个端点

在这两种情况下,它们都是性能问题:要么使用的带宽超过了应该使用的带宽,要么发出的HTTP请求超过了应该使用的带宽

在一个完美的世界里,这些问题永远不会出现;您将拥有准确的端点,为您的产品提供准确的数据

当您对产品进行扩展和迭代时,这些问题经常出现。 您在页面上使用的数据经常会发生变化,并且为每个组件维护一个具有正确数据的独立端点的成本变得太高

因此,在没有太多端点和让端点最适合每个组件的需要之间,您最终得到了一个折衷方案。在某些情况下,这将导致过度抓取(端点将提供比某个特定组件所需的数据更多的数据),而在某些情况下,这将导致不足抓取(您将需要调用第二个端点)



GraphQL修复了这个问题,因为它允许您从服务器请求所需的数据。您可以指定所需内容,并在一次服务器访问中仅获取此数据。

过取和欠取 在Ruby这样的动态语言中,过抓取和欠抓取是两个常见的陷阱

过度抓取 如果在片段中声明了其他字段,但在模板中没有实际使用,则会发生过度抓取。当修改模板代码以删除某个字段的使用时,可能会发生这种情况

如果该片段没有随此更改一起更新,那么当我们不再需要它时,仍然会获取该属性。简单的标题字段在实践中可能不是什么大问题,但该属性可能是一个更昂贵的嵌套数据树

取数不足 如果字段未在片段中声明,但在模板中使用,则会发生欠取。丢失的数据可能会显示为NoFieldError或nil值


更糟糕的是,当模板没有声明数据依赖项,但由于调用方恰好从上游获取了正确的数据而似乎正在工作时,可能存在潜在的欠取错误。但是,当从不同的路径呈现相同的模板时,它会在缺少数据时出错。

过度抓取意味着您正在抓取此时无用的无关变量。
在fetching下意味着您在这一点上获取的变量更少

这个问题是关于graphQL和REST的,而不是Ruby。不过尝试得不错!很好的解释:)