2017-06-15 42 views
0

我一直在玩graphql。在graphQL之前,我们通常使用REST API。许多开发人员表示graphQL修复了REST的一些问题。 (例如,超额提取&)。我迷惑这个条款。什么是过度抓取或抓取不足?

有人可以解释什么是在取回是这种情况下?

感谢,

回答

5

在取被取太多的数据,又名有在你不使用的数据效应初探。

通过对端点的调用,欠采样的数据不足,从而导致您调用第二个端点。

在这两种情况下,它们都是性能问题:您要么使用比应该更多的带宽,要么发出更多的HTTP请求。

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

当您对产品进行缩放和迭代时,经常会出现这些问题。 您在页面上使用的数据通常会发生变化,并且为每个组件准确维护一个单独的端点所需的成本变得过高。

所以你最终要在没有太多端点和让端点适合最佳需求之间妥协。这在某些情况下会导致过度抓取(端点将提供您需要的特定组件所需的更多数据),而在其他情况下抓取不足(您需要调用第二个端点)。


因此,GraphQL修复了这个问题,因为它允许访问服务器公开的任意一组数据。您特别指定了您需要的内容,并且只需要一次访问服务器就可以获得这些数据,并且只能获取这些数据。

0

简单来说,过度抓取是您的查询响应的额外数据不需要,即您发送的客户端太多的数据,他们可能不需要,虽然低于正好相反,你收集更少的数据,因此客户可能最终会丢失他们可能需要的重要信息。

使用graphQL,您可以得到与仅使用请求的字段执行的查询完全相同的形状的响应。