面向 JavaScript 开发人员的 Azure 上的 GraphQL

GraphQL 可帮助您的 JavaScript 应用程序通过单个请求准确检索所需的数据。 本文介绍了什么是 GraphQL、为什么使用它,以及 Azure 服务如何帮助你以最少的工作量构建 GraphQL 应用程序。 无论您是迁移现有 GraphQL 应用程序还是构建新应用程序,Azure 都提供了工具和服务来简化流程。

什么是 GraphQL?

GraphQL 是 Web 应用程序与服务器和数据库通信的一种现代方式。 将其视为准确请求所需信息的更智能方式:

  • 这就像订购定制餐点而不是接受固定菜单 - 您要求的正是您想要的
  • 它与 React、Vue 或 Angular 等 JavaScript 应用程序配合得很好
  • 它可以使您的 Web 应用程序更快、更轻松地构建

GraphQL 允许您发出一个精确的请求来获取所需的所有数据,而不是向不同的服务器终端节点发出多个请求(就像使用传统的 REST API - 大多数 Web 服务的标准通信方式一样)。

为什么我要在我的 Web 应用程序中使用 GraphQL?

GraphQL 主要通过三种方式使您的 JavaScript 应用程序变得更好:

  • 准确获取所需数据:您的应用程序可以只请求它现在需要的数据 - 不多也不少。 这就像去吃自助餐,只吃你会吃的东西,而不是吃一大顿固定的饭菜,大部分都被浪费掉了。 这会使您的应用程序更快,因为它下载的数据更少。

  • 一个请求而不是多个请求:需要来自多个地方的信息? GraphQL 允许您只发出一个请求来获取所有内容,而不是向 5 个不同的终端节点发出 5 个不同的请求。 这就像让一个人收集你所有的购物,而不是你去五家不同的商店。

  • 使用更好的工具减少错误:GraphQL 附带的工具可帮助您在编码时捕获错误,而不是在应用程序运行时捕获错误。 这就像在你打字时进行拼写检查,而不是在你发布文档后发现拼写错误。

使用 GraphQL 和 JavaScript 进行构建时,您可能会使用以下常用工具之一:

  • Apollo 客户端:使用最广泛的 GraphQL 客户端,可与 React、Vue、Angular 和纯 JavaScript 配合使用。
  • URQL:一种性能良好的轻量级替代方案。
  • Relay:由 Facebook(也是 GraphQL 的创建者)创建,最适合大型 React 应用程序。

适用于 GraphQL 应用程序的 Azure 服务

根据您的具体情况选择您的方法:

如果你想要... 那么你应该... 使用这些 Azure 服务
将现有 GraphQL 应用引入 Azure 在不更改代码的情况下部署应用程序 Azure 应用服务或 Azure 容器应用
将 GraphQL 添加到现有数据 以最少的编码为数据创建 GraphQL 终端节点 数据 API 生成器
构建 GraphQL API 层 在现有 API 上创建统一的 GraphQL 接口 使用 GraphQL 转换的 Azure API 管理

在 Azure 上托管 GraphQL 应用程序

根据要构建的应用程序类型,您有几个不错的选择:

  • 应用服务:这类似于传统的 Web 托管服务,但具有额外的功能。 它非常适合大多数需要服务器的 JavaScript 应用程序。

  • 容器应用程序:如果您的应用程序打包在容器(如 Docker)中,则此服务可以轻松运行和扩展它们。

GraphQL 应用程序的数据存储

GraphQL 需要连接到您的数据。 Azure 提供了多种方法来执行此作:

  • 将您的数据库转换为 GraphQL API:“数据 API 构建器”工具可以从现有数据库自动创建 GraphQL 终端节点(您的应用程序可以在其中发送 GraphQL 请求的 URL)- 无需编码!

  • 存储数据:Azure 提供满足不同需求的数据库:

    • SQL 数据库:适用于传统的基于表的数据
    • Cosmos DB:用于灵活、可缩放的数据存储,无需严格的架构

保护 GraphQL 应用程序

  • 用户登录和安全性:Azure 的身份平台可帮助您向应用程序添加登录功能,以便只有合适的人员才能访问您的 GraphQL 数据。
  • 基于角色的访问:精确控制哪些用户可以通过 GraphQL 终端节点查询或修改哪些数据。
  • API 保护:添加速率限制和监控以防止滥用 GraphQL API。

为现有数据创建 GraphQL API

Azure 中已有数据,并希望使用 GraphQL 访问这些数据? 有几种简单的方法可以做到这一点:

  • API 管理:此服务可以在您现有的 API 或数据源之前创建一个 GraphQL 层。 这就像将 GraphQL 转换器添加到本身不使用 GraphQL 的系统。

  • Data API Builder:此工具会自动从您的数据库创建 GraphQL 终端节点。 这是将 GraphQL 添加到现有数据的最快方法 - 只需将其指向您的数据库,它就会为您完成工作。

一个简单的示例:为产品数据库创建 GraphQL API

以下是该过程的简单运作方式:

  1. 您有一个包含产品信息(名称、价格、描述)的数据库
  2. 您设置 Data API Builder 以连接到您的数据库
  3. Data API Builder 会自动创建 GraphQL 终端节点
  4. 您的 JavaScript 应用程序现在可以进行 GraphQL 查询,例如:
{
  products(where: { price_lt: 50 }) {
    name
    price
    description
  }
}

此查询将为您提供 50 美元以下的所有产品,仅显示它们的名称、价格和描述。

帮助您入门的资源

如果您想了解更多信息或开始使用 Azure 上的 GraphQL 进行构建,这里有一些有用的资源:

后续步骤