ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

使用 GraphQL 和 StepZen 从 Fauna 和 GitHub 撰写数据

2022-11-17 14:49:46  阅读:337  来源: 互联网

标签:GraphQL StepZen Fauna GitHub 数据 数据库 组成 构建 用户 组织


数据组合对于现代 API 变得越来越重要。公司不再只在一个数据库中存储数据;更常见的是,数据来自多个来源。例如,具有各种规范的数据库或第三方 API。在 GraphQL 中,API 中的数据组合也称为联合。这篇文章将教你如何使用 GraphQL 和 StepZen 从 Fauna 和 GitHub 中撰写数据。

为了展示如何组成(或联合)数据,我们将合并来自 Fauna 和 GitHub 的数据。Fauna 是一个作为全局 API 交付的分布式文档关系数据库。Fauna 可以使用Fauna Query Language(FQL) 进行查询,并且还提供原生的 GraphQL API。GitHub 是一个流行的版本控制和协作代码托管平台,它还提供了一个 GraphQL API。我们将在这篇文章中构建的 API 将从 GitHub 存储库中获取数据,并使用 StepZen 存储在 Fauna 中的数据来丰富它。StepZen 是一个 GraphQL 即服务平台,允许您以声明方式将来自多个来源的数据组合到一个 API 中。下图显示了数据的组成方式。

使用 StepZen GraphQL 组合来自动物群和 GitHub 的数据

您可以从连接的任何应用程序查询使用 StepZen 创建的 GraphQL API。例如,您可以在 Web 应用程序中使用 API 来显示存储库列表及其星号和分支。您还可以在移动应用程序中使用 API 来显示相同的数据。

首先,我们将探索 GitHub GraphQL API,看看我们如何查询它。然后,我们将设置一个带有数据的动物数据库并播种。最后,StepZen 将用于组合来自 Fauna 和 GitHub 的数据,并将其作为单个 GraphQL 响应返回。

探索 GitHub GraphQL API

在这篇文章中,我们将构建一个 GraphQL API,它由来自 Fauna 和 GitHub 的数据组成。首先,我们将探索 GitHub GraphQL API。GitHub GraphQL API 是一个公共 API,可用于查询有关存储库、用户、组织等的数据。该 API 记录在 GitHub 上,可以使用 GraphiQL 进行查询。

首先,我们将查询 API 以获取用户存储库的名称和说明。下面的查询将返回用户存储库的名称和说明。您可以将登录参数替换为您自己的 GitHub 用户名。octocat

{
  user(login: "octocat") {
    repositories(first: 5) {
      edges {
        node {
          id
          name
          description
        }
      }
    }
  }
}

此查询将返回数据,如下面的屏幕截图所示。

Github GraphiQL explorer

当你不使用 Github GraphiQL 浏览器来查询 GraphQL API 时,你应该创建一个个人访问令牌,并在 GraphQL 请求的授权标头中使用它。您可以在Github 设置中创建个人访问令牌。

从 Github GraphiQL 浏览器中,您可以找到可以查询 GitHub 存储库的所有字段。除此之外,我们接下来将建立一个 Fauna 数据库,其中包含有关存储库的数据。我们将使用 Fauna 中的数据来丰富来自 GitHub 的数据。

设置动物群

创建一个动物群帐户

要开始使用 Fauna,您需要在此处注册,例如,使用您的 GitHub 帐户注册。注册后,您将被重定向到Fauna仪表板。在仪表板中,可以通过单击“+ 创建数据库”按钮来创建数据库

创建动物数据库

为数据库命名,例如 stepzen-demo,并选择 Fauna 应托管数据库的区域。在 StepZen 免费计划上创建的 GraphQL API 托管在美国,因此我们将选择该区域。

创建动物数据库 2

Fauna 仪表板将显示您创建的数据库。在此页中,您还可以向数据库添加数据。Fauna 是基于文档的数据库,因此数据作为集合存储在数据库中,而不是表中。在下一步中,我们将创建一个集合并添加一些数据。为此,您可以使用仪表板或工具动物壳。

标签:GraphQL,StepZen,Fauna,GitHub,数据,数据库,组成,构建,用户,组织
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有