GraphQL 与 REST – API 之间的差异
GraphQL 和 REST 之间的主要区别
- GraphQL 是一种应用层服务器端技术,用于使用现有数据执行查询,而 REST 是一种软件架构风格,它定义了一组用于创建 Web 服务的约束。
- GraphQL 可以按照模式进行组织,而 REST 可以按照端点进行排列。
- GraphQL 中的开发速度很快,而 REST 中的开发速度较慢。
- GraphQL 突变的消息格式应该是字符串,而 REST 突变的消息格式可以是任何格式。
- GraphQL 使用元数据进行查询验证,而 REST 没有可缓存的机器可读元数据。
什么是 GraphQL?
GraphQL 是 Facebook 开发的一种应用层服务器端技术,用于使用现有数据执行查询。GraphQL 可以优化 RESTful API 调用。它提供了一种声明式的获取和更新数据的方法。
GraphQL 可帮助您将数据从服务器加载到客户端。它使程序员能够选择他们想要发出的请求类型。
什么是休息?
REST 是一种软件架构风格,它定义了一组用于创建 Web 服务的约束。它专为处理媒体组件、文件或硬件设备而设计。REST 的全称是表述性状态转移。
GraphQL 的功能
以下是 GraphQL 的重要特性:
- 它是静态类型的,因此在使用它之前不需要定义变量。
- GraphQL 可以将前端与后端分离。
- 不会出现数据获取过多或过少的情况。
- 它与语言和 HTTP 无关。
- GraqphQL 文档无需额外付费。
- 它可以帮助您节省带宽。
REST API 的功能
以下是 REST API 的重要功能:
- REST具有统一的接口。
- REST 服务可以扩展以实现高性能来满足客户需求。
- 可以通过名称轻松访问资源。
- 这款 REST API 使系统能够以简单的方式传输或接收数据。
- 应用程序中的数据库资源可以通过 REST API 端点快速映射。
- REST 允许您将经常使用的信息存储在内存中。
- 它具有简单的架构和模式。
- REST 的 API 可以由多个服务器提供服务。
GraphQL 和 REST API 之间的区别
这是 GraphQL 和 REST API 之间的重要区别。
GraphQL | REST的 |
---|---|
GraphQL 是 Facebook 开发的一种应用层服务器端技术,用于使用现有数据执行查询。 | REST 是一种软件架构风格,它定义了一组用于创建 Web 服务的约束。 |
它遵循客户端驱动的架构。 | 它遵循服务器驱动的架构。 |
GraphQL 可以按照模式来组织。 | REST 可以根据端点来安排。 |
GraphQL 是一个正在不断发展的社区。 | REST 是一个大型社区。 |
GraphQL 中的开发速度很快。 | REST 中的开发速度较慢。 |
GraphQL 的学习曲线很困难。 | REST 的学习曲线适中。 |
身份和你获取身份的方式是分开的。 | 您在 REST 中调用的端点是对象的身份。 |
在 GraphQL 中,服务器确定可用资源。 | 在 REST 中,资源的形状和大小由服务器决定。 |
GraphQL 在所有平台上提供高度一致性。 | 在所有平台上保持一致性非常困难。 |
GraphQL 突变的消息格式应该是字符串。 | REST 变异的消息格式可以是任何格式。 |
它是强类型的。 | 它是弱类型的。 |
GraphQL API 端点是单一的。 | REST API 端点有多个。 |
它使用元数据来 查询验证。 |
它没有可缓存的机器可读元数据。 |
在所有操作系统上提供一致且高质量的用户体验。 | 在所有操作系统上保持一致性十分困难。 |
GraphQL的合作伙伴需要API定制。 | 它提供灵活的公共 API,可以轻松启用新的应用程序。 |
GraphQL 的优势
以下是 GraphQL 的重要优点/好处:
- 它提供声明性查询语言,这不是命令式的。
- 它是分层的并且以产品为中心。
- GraphQL 是强类型的。这意味着查询是在特定系统的上下文中执行的。
- GraphQL 中的查询在客户端中编码,而不是在服务器中编码。
- 它具有OSI模型应用层的所有功能。
- GraphQL 提供了人类可读的查询。
- 在 GraphQL 中,可以轻松处理许多数据库。
- 您可以通过单个 API 调用来获取数据。
- 它可以帮助您进行查询批处理和缓存。
- 根据您的需要定制请求。
- 它可以帮助您发现适当格式的模式。
- GraphQL 会自动保持文档与 API 更改同步。
- API 的演变无需版本控制。
- 它可用于快速应用原型设计。
- GraphQL 字段可以共享到更高的组件级别以供重用。
- 它允许您选择要公开的功能以及它们的工作方式。
REST API 的优点
以下是 REST 的重要优点/好处:
- 它使您能够轻松扩展软件。
- 您可以轻松地从一台服务器迁移到另一台服务器。
- 该协议使得跨不同项目的开发变得容易。
- REST API 提供了在开发过程中尝试各种项目环境的机会。
- REST 非常容易构建和适应。
- 您可以明确地创建流程实例。
- 客户端机器不需要路由信息。
- 开发人员可以构建满足用户特定需求的 API。
GraphQL 的应用
以下是使用 GraphQL 的重要应用:
- 它提供中继和其他客户端框架。
- GraphQL 帮助您提高移动应用程序的性能。
- 当客户端应用程序必须指定长查询格式中需要哪些字段时可以使用它。
- 当您必须向旧的或现有的 API 添加功能时,可以充分利用 GraphQL。
- 当您必须简化复杂的 API 时使用它。
- 混合使用面向对象编程中常用的外观模式。
- 当您必须将来自多个地方的数据聚合到一个方便的 API 中时可以使用它。
- 您可以使用 GraphQL 作为现有 API 的抽象,以根据用户需求指定响应结构。
REST 的应用
以下是使用 REST 的重要应用:
- REST 用于异构语言和环境。
- 它支持基于各种 编程语言 互相交流。
- 借助 REST,这些 Web 应用程序可以驻留在不同的环境中,有些可以位于 Windows,其他的可能在Linux上。
- 使 UI 可跨多个平台移植。
- 获得统一的接口。
- 分层系统,其架构由分层的层组成。
GraphQL 的缺点
以下是使用 GraphQL 的缺点/缺点:
- 后端资源不足。
- 缺少复杂应用程序的设计模式。
- 复杂查询的性能问题。
- 对于小型应用程序来说,这是过度的。
- 它不基于能够存储请求内容的 HTTP 缓存方法。
- 在实施 GraphQL 策略之前,您需要学习 GraphQL 模式定义语言。
- GraphQL 使用单个端点,而不是遵循 HTTP 缓存。
- 对于简单的应用程序来说,这不是一个好的解决方案,因为它会增加复杂性。
休息的缺点
以下是使用 REST 的缺点/缺点:
- REST 不维护客户端和服务器之间先前交互的状态。
- 如果您必须从两个端点检索任何数据,则需要向 API 发送两个单独的请求。
- 没有办法获得有限的字段。
- 无法操作嵌套资源。
- 数据搜索功能不佳。
- 查询验证不可用。
- 它不处理 API 的添加、弃用和更改。
- 没有工具或框架指导。
GraphQL 和 REST 哪个更好?
GraphQL 与 REST 相比,GraphQL 有很多优势。GraphQL 比 REST 更快,因为你可以轻松选择要查询的字段。与 REST 相比,GraphQL 提供了更好的学习曲线。
总体而言,选择 GraphQL 还是 REST 是一项困难的任务,因为两者都各有千秋。此外,它们之间也有相似之处,例如 REST API 中的端点和 GraphQL 中的字段列表。