为什么我觉得需要使用GraphQL!

在本文中,我们将讨论GitHub的REST API不够高效以及GitHub的GraphQL API如何帮助我们解决问题的情况。

在进行Git Repository Analyzer项目时,我们广泛使用了Octokit的GitHub REST API客户端。 Node.js异步调用的使用有助于同时进行HTTP调用,但是为了获取所需数据而进行的HTTP调用过多。 让我们看看如何使用GitHub的GraphQL API克服问题。

资料需求

  1. 根据搜索参数搜索GitHub存储库; 例如language:java
  2. 按照在存储库中发现的数降序对这些存储库进行排序。
  3. 对于每个存储库,获取前30个拉取请求。
  4. 对于每个拉取请求,获取问题和补丁/差异数据。 发出数据和补丁数据可以通过进行2个单独的HTTP调用来获取。 补丁是一个小文件,指示存储库中已更改的内容。

使用GitHub REST API v3

基于上述要求,我们以以下方式检索数据。

问题

让我们看一下上述方法面临的问题:

  • HTTP调用次数

假设我想从5个GitHub存储库中获取所需的数据。

  1. 一个HTTP调用,用于获取存储库详细信息(计数:1)
  2. 对于每个存储库,我们获得30个拉取请求数据(计数:5)
  3. 对于每个拉取请求,我们进行1个HTTP调用以获取拉取请求的Issue数据(计数:30 * 5 = 150)
  4. 对于每个请求请求,我们进行1个HTTP调用,以获取请求请求的补丁/差异数据(计数:30 * 5 = 150)

我们总共进行306次HTTP 调用 ,以基于搜索查询获取5个存储库的Issue和Patch数据。

  • 删除未使用的数据

在每个HTTP调用之后,响应中只有很少的字段用于后续调用。 为了减小最终输出的大小,有必要从响应中删除未使用的数据。

什么是GraphQL?

graphql.org

GraphQL为您的API中的数据提供了完整且易于理解的描述,使客户能够准确地询问他们所需的内容,仅此而已,使随着时间的推移更容易开发API,并启用了功能强大的开发人员工具。

为什么要使用GitHub的GraphQL API?

  • 大幅减少HTTP调用

在上述情况下,当我们使用GitHub的REST API时,我们进行了306次HTTP调用以检索数据。 现在,只需很少的HTTP调用即可接收所有这些数据。 在下一篇文章中,我们将看到HTTP调用的确切计数以及有关实现的详细信息。

  • 仅获取必填字段

我们仅收到我们要求的数据-仅此而已。 我们不再需要删除未使用的数据。

  • 单端点

我们不再需要使用其他URL(以REST API调用为例)来检索数据。 GraphQL具有单个端点,该端点独立于所需数据。

当前,GitHub的GraphQL API不支持上述用例。 已出于相同目的提出了请求

最初于 2018年8月18日 发布在 https://www.linkedin.com

From: https://hackernoon.com/why-i-felt-the-need-to-use-graphql-b451d16e7369

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值