REST 与 GraphQL:面向开发者的 API 架构对比

API 简介

API(应用程序编程接口的综合与)是软件与Web开发的核心支柱,为应用程序与数据库或服务器无缝通信和共享数据创建桥梁或链接。

API 架构风格有很多,有这两种风格最为流行,分别是:REST(表述性状态传输)和 GraphQL。两者均有一些优点和缺点。

本文指南将向各位介绍这些 API 架构、它们的原理、优点、缺点和用例。读完本文后,你将获得一些真实见解,可以对项目中使用的 API 架构做出更明智的决策。

我们深入研究 REST 和 GraphQL,比较它们的优缺点之后,希望能帮助更多开发者朋友做出正确的选择。

了解 REST API

REST是 REpresentational State Transfer 的缩写。

它是当今大多数服务器和网站上最常见的 API 架构风格。使用 REST 风格构建的 API 被称为 RESTful API。

RESTful API 将资源组织为统一资源标识符 (URI)。资源是 API 表示或与之交互的实体或对象。URI 区分服务器上的资源:它可以是用户资源、产品资源或图像资源,具体取决于你在后端服务器上构建的内容。

资源始终要以名词而不是动词分组。比如:


example/com/api/v1/user

而不是下面的样式:



example/com/api/v1/getauser


比如客户端想要从服务器检索用户详细信息,则客户端使用HTTP 代码向服务器发送针对用户资源的请求。

这里我们所讨论的资源就如同调用服务器上的用户数据表。

REST 的具体用例

Web服务:

REST 被广泛用于构建提供功能的 Web 服务。常见的例子有支付网关、天气服务、公共 API 等。

移动应用服务:

REST API 用于构建访问远程服务器的移动应用程序,从而可以很轻松地验证用户身份、处理事务、共享内容等。

物联网服务:

RESTful API 用于物联网设备与远程服务器通信,使服务器能够共享数据并从集中式网络接收命令。

第三方集成:

RESTful API 简化了不同系统或服务器之间的集成,使其适合数据交换、云服务和企业应用程序。

安全:

RESTful API 具有分层的 REST 系统,使其可扩展并能够在不存储客户端状态的情况下处理大量请求。

API文档:

RESTful API 允许客户端请求特定资源或该资源的表示形式(例如 JSON 或 XML),从而使其能够适应不同的客户端或最终用户的需求。

REST的优点

  • REST 易于理解和使用。它遵循标准的 HTTP 方法并被许多人广泛理解并使用。

  • REST 中的缓存可减少服务器负载,提高服务器和客户端的性能。

  • REST 支持众多工具和扩展库。

  • REST 端点具有清晰、可预测的 API 交互结构。

REST的缺点

  • RESTful API 依赖于 HTTP,随着时间的推移,这可能会导致与多个站点的大量连接。

  • 由于客户端和服务器之间存在多次往返以及复杂的服务器端逻辑,RESTful API 可能不适合复杂的活动。

  • RESTful API 依赖于 HTTP 安全性,这可能无法满足所有安全要求;这将导致添加额外的安全层。

  • 与 GraphQL 这样的查询语言不同,RESTful API 可能难以处理复杂的查询、搜索和过滤。


探索 GraphQL API

GraphQL是由Meta构建的查询架构风格语言。它提供 API 数据的架构,并让客户端请求特定数据。

它充当客户端和后端服务器或服务之间的链接。以下是我们总结的 GraphQL 的一些核心概念:

架构:

GraphQL 使用模式来定义可执行的操作或查询。该架构充当客户端和服务器之间的接口,以便获取或修改数据。

类型:

GraphQL 与 REST 一样,API 中具有多种数据类型。其中包括自定义的 String、Int、Boolean 或自定义对象类型。GraphQL 类型的每个字段都有其类型。例如,在 GraphQL 中,Book 类型的 book_name 字段是 String,publish_date 字段是 Int。不知道是否讲明白了

查询:

GraphQL 是一种查询语言,允许客户端指定他们想要从服务器获取的数据的形态和内容。客户端可以使用 GraphQL 请求查询中的特定字段,并且可以嵌套数据,服务器将使用与查询结构匹配的数据进行响应。这使客户端能够仅获取所需的数据,避免对服务器发出不必要或过多的请求。

突变:

变是使用 GraphQL 修改数据的一种方式。与主要用于从服务器检索数据的查询,突变用于在服务器上创建、更新或删除数据。突变确保写入服务器的数据是可预测的。

订阅:

GraphQL 中的订阅支持实时更新,例如通知。客户端可以使用订阅来侦听服务器上的特定事件或操作。当这些事件或操作发生时,服务器会向订阅的客户端发送通知。

解析器:

解析器是将模式字段连接到数据源的函数,它可以根据查询获取或修改数据。解析器是模式和数据之间的桥梁,它们处理数据操作和检索的逻辑。

GraphQL 的特点

<ul style="padding-left: 1.5em; outline-style: initial; outline-width: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, " system-ui",="" "helvetica="" neue",="" "pin

Keyword: Hailuo

Similar Posts