GraphQL 整体架构与应用程序组件

GraphQL 是描述 GraphQL 服务器行为的规范。它是一组关于如何处理请求和响应的标准,如支持的协议、服务器可以接受的数据格式、服务器返回的响应格式等。 客户端向 GraphQL 发出的请求服务器称为查询。GraphQL 的另一个重要概念是其传输层不可知性。它可以与任何可用的网络协议一起使用,如 TCP、websocket 或任何其他传输层协议。它对数据库也是中立的,因此您可以将它与关系数据库或 NoSQL 数据库一起使用。


GraphQL Server 架构

可以使用下面列出的三种方法中的任何一种来部署 GraphQL Server

  • 带有连接数据库的 GraphQL 服务器
  • 集成现有系统的 GraphQL 服务器
  • 混合方法

具有连接数据库的 GraphQL 服务器

这种架构有一个带有集成数据库的 GraphQL 服务器,通常可以用于新项目。收到查询后,服务器读取请求有效负载并从数据库中获取数据。这称为解析查询。返回给客户端的响应遵循官方 GraphQL 规范中指定的格式。

GraphQL连接数据库的服务器
GraphQL连接数据库的服务器

在上图中,GraphQL 服务器和数据库集成在一个节点上。客户端通过 HTTP 与 GraphQL 服务器通信。服务器处理请求,从数据库中获取数据并将其返回给客户端。

GraphQL Server 集成现有系统

这种方法对于拥有遗留基础设施和不同 API 的公司很有帮助。GraphQL 可用于统一现有系统中的微服务、遗留基础设施和第三方 API。

GraphQL 集成现有的系统
GraphQL 集成现有的系统

在上图中,GraphQL API 充当客户端和现有系统之间的接口。客户端应用程序与 GraphQL 服务器通信,后者反过来解析查询。

二者混合

最后,我们可以将以上两种方式结合起来,搭建一个 GraphQL 服务器。在这种架构中,GraphQL 服务器将解析收到的任何请求。它将从连接的数据库或集成的 API 中检索数据。这如下图所示

GraphQL 集成现有系统和数据库
GraphQL 集成现有系统和数据库


GraphQL 组件

上面我们大概介绍了GraphQL基本的架构模式,接下来我们看 GraphQL 组件以及它们相互通信的方式。整个应用程序组件可以区分如下

  • 服务器端组件
  • 客户端组件

服务器端组件

GraphQL 服务器构成了服务器端的核心组件,并允许解析来自 GraphQL 客户端应用程序的查询。Apollo Server 是最常用的 GraphQL 规范实现。其他服务器编程组件包括以下内容

序号 组件 描述
1 Schema GraphQL Schema 是任何 GraphQL 服务器实现的中心,它描述了连接到它的客户端可用的功能。
2 Query GraphQL Query 是从数据库或遗留 API 检索数据的客户端应用程序请求。
3 Resolver Resolver 提供了将 GraphQL 操作转换为数据的指令。他们通过定义解析器函数将查询解析为数据。

客户端组件

下面给出的是客户端组件

序号 组件 描述
1 GraphiQL 基于浏览器的界面,用于编辑和测试 GraphQL 查询。
2 ApolloClient 构建 GraphQL 客户端应用程序的最佳工具。与所有 javascript 前端集成良好。

下图显示了客户端-服务器架构。Web 服务器建立在 NodeJs 和 Express 框架之上。ReactJS 应用程序(使用 Apollo 客户端库构建)或 GraphiQL 浏览器应用程序向 Apollo GraphQL 服务器发出请求。查询将根据服务器中定义的模式进行解析和验证。如果请求模式通过验证,则将执行关联的解析器函数。解析器将包含从 API 或数据库获取数据的代码。

GraphQL-客户端服务端架构
GraphQL-客户端服务端架构

查看笔记

扫码一下
查看教程更方便