• 联系我们
  • FAQ
加入收藏
比特900财经
  • 首页
  • 7×24
  • 市场行情
    • 比特币(BTC)
    • 以太坊(ETH)
    • Ripple(XRP)
    • Chainlink(LINK)
    • Litecoin(LTC)
    • Cardano(ADA)
    • Zcash (ZEC)
    • Altcoin(ALT)
    • Dogcoin
    • EOS
  • 区块链
  • 交易所
  • NFT
  • DeFi
  • Layer 2
  • Web 3
  • 技术创新
  • 深度观察
  • 联系我们
No Result
View All Result
  • 首页
  • 7×24
  • 市场行情
    • 比特币(BTC)
    • 以太坊(ETH)
    • Ripple(XRP)
    • Chainlink(LINK)
    • Litecoin(LTC)
    • Cardano(ADA)
    • Zcash (ZEC)
    • Altcoin(ALT)
    • Dogcoin
    • EOS
  • 区块链
  • 交易所
  • NFT
  • DeFi
  • Layer 2
  • Web 3
  • 技术创新
  • 深度观察
  • 联系我们
No Result
View All Result
比特900财经-专业比特币财经媒体
No Result
View All Result
Home 7x24

GraphQL 与 REST API:有什么区别?

digger by digger
31 3 月, 2024
in 7x24, 区块链
0
GraphQL 与 REST API:有什么区别?
189
SHARES
1.5k
VIEWS
Share on FacebookShare on Twitter


作为软件组件交互和数据在互联网上流动的渠道,API 是当代 Web 服务的命脉。 SOAP(一种 Web 服务消息传递协议)、REST(一种架构风格)和 GraphQL(一种编程语言和工具)等 API 技术通过支持第三方数据和服务集成来简化软件开发。 API 还使公司能够向员工、业务合作伙伴和用户提供安全的服务功能和数据交换。

尽管 API 类型很多,但近年来关于两种主要范式的争论占据了主导地位:REST(表征状态转移)和 GraphQL。 两者都具有一系列优势,因此被部署用于全球的网络项目。 然而,它们在管理数据流量的方式上存在显着差异。 在这里,我们剖析这些差异并讨论企业如何使用 REST 和 GraphQL API 来优化其网络。

Related articles

熊测试关键支持时,以太坊价格处于下行休息的风险

熊测试关键支持时,以太坊价格处于下行休息的风险

18 6 月, 2025
Dogecoin设定了舞台以升空,并以钥匙逆转模式

Dogecoin设定了舞台以升空,并以钥匙逆转模式

17 6 月, 2025

什么是 REST 和 GraphQL API?

为了比较两者,需要分别了解 REST 和 GraphQL API。

休息

REST 开发于 2000 年代初期,是一种用于网络超媒体应用程序的结构化架构风格,旨在使用无状态、客户端/服务器、可缓存通信协议。 REST API,也称为 RESTful API,是 REST 架构的驱动程序。

REST API 使用唯一资源标识符 (URI) 来寻址资源。 REST API 的工作原理是让不同的端点对网络资源执行 CRUD(“创建”、“读取”、“更新”和“删除”)操作。 它们依靠预定义的数据格式(称为媒体类型或 MIME 类型)来确定向客户端提供的资源的形状和大小。 最常见的格式是 JSON 和 XML(有时是 HTML 或纯文本)。

当客户端请求资源时,服务器处理查询并返回与该资源关联的所有数据。 响应包括 HTTP 响应代码,例如“200 OK”(对于成功的 REST 请求)和“404 Not Found”(对于不存在的资源)。

GraphQL

GraphQL 是 Facebook 于 2012 年内部开发的一种查询语言和 API 运行时,并于 2015 年开源。

GraphQL 由以 GraphQL 模式定义语言编写的 API 模式定义。 每个模式指定用户可以查询或修改的数据类型以及类型之间的关系。 解析器支持模式中的每个字段。 解析器提供将 GraphQL 查询、突变和订阅转换为数据的指令,并从数据库、云服务和其他来源检索数据。 解析器还提供数据格式规范,并使系统能够将来自不同来源的数据拼接在一起。

与 REST(通常使用多个端点来获取数据并执行网络操作)不同,GraphQL 通过使用单个端点来公开数据模型,客户端通过该端点发送 GraphQL 请求,无论他们要求什么。 然后,API 访问资源属性(并跟踪资源之间的引用),以通过对 GraphQL 服务器的单个查询获取客户端所需的所有数据。

GraphQL 和 REST API 都是基于资源的数据交换,它们使用 HTTP 方法(如 PUT 和 GET 请求)来指示客户端可以执行哪些操作。 然而,它们之间存在关键差异,这不仅解释了 GraphQL 的激增,也解释了为什么 RESTful 系统具有如此持久的力量。

GraphQL 和 REST API 之间的差异

GraphQL 为 REST 提供了高效、更灵活的补充; GraphQL API 通常被视为 RESTful 环境的升级,特别是考虑到它们能够促进前端和后端团队之间的协作。 GraphQL 为组织的 API 之旅提供了合乎逻辑的下一步,帮助解决 REST 中经常遇到的问题。

然而,REST 长期以来一直是 API 架构的标准,许多开发人员和架构师仍然依赖 RESTful 配置来管理其 IT 网络。 因此,了解两者之间的区别对于任何组织的 IT 管理策略都是不可或缺的。

REST 和 GraphQL API 的不同之处在于管理方式:

数据检索

由于 REST 依赖于多个端点和无状态交互(其中每个 API 请求都作为新查询进行处理,独立于任何其他请求),因此客户端会收到与资源关联的每条数据。 如果客户端只需要数据的子集,它仍然会收到所有数据(过度获取)。 如果客户端需要跨多个资源的数据,RESTful 系统通常会让客户端单独查询每个资源,以弥补初始请求中数据检索不足的情况(获取不足)。 GraphQL API 使用单个 GraphQL 端点在单个请求的单次往返中为客户端提供精确、全面的数据响应,从而消除过度获取和获取不足的问题。

版本控制

在 REST 架构中,团队必须对 API 进行版本控制以修改数据结构,并防止最终用户出现系统错误和服务中断。 换句话说,开发人员每次进行更改时都必须创建一个新端点,从而创建多个 API 版本并可能使维护变得复杂。 GraphQL 减少了版本控制的需求,因为客户端可以在查询中指定其数据要求。 向服务器添加新字段不会影响不需要这些字段的客户端。 相反,如果字段已弃用,客户端可以继续请求它们,直到更新查询。

错误处理

REST API 应该 使用 HTTP 状态代码来指示请求的状态或成功,每个状态代码都有特定的含义。 成功的 HTTP 请求会返回 200 状态代码,而客户端错误可能会返回 400 状态代码,服务器错误可能会返回 500 状态代码。

乍一看,这种状态报告方法似乎更简单,但 HTTP 状态代码对 Web 用户而言通常比对 API 本身更有用,尤其是在出现错误的情况下。 REST 没有错误规范,因此 API 错误可能会显示为传输错误,或者根本不会与状态代码一起出现。 这种动态会迫使人员仔细阅读状态文档,以了解错误的含义,甚至错误在基础设施内是如何传达的。

使用 GraphQL API,每个请求(无论是否导致错误)都会返回 200 OK 状态代码,因为错误不会使用 HTTP 状态代码进行传达(传输错误除外)。 相反,系统会在响应正文中与数据一起传达错误,因此客户端必须解析数据负载以确定请求是否成功。

也就是说,GraphQL 确实有错误规范,因此 API 错误更容易与传输错误区分开。 错误的确切性质出现在响应正文中的“错误”条目中,这可以使 GraphQL API 更适合构建。

实时数据

REST 没有内置的实时更新支持。 如果应用程序需要实时功能,开发人员通常必须实现长轮询(客户端重复轮询服务器以获取新数据)和服务器发送事件等技术,这会增加应用程序的复杂性。

但是,GraphQL 内置了通过订阅进行实时更新的支持。 订阅保持与服务器的稳定连接,允许服务器在发生特定事件时将更新推送到客户端。

工具与环境

REST 环境已经完善,为开发人员提供了广泛的工具、库和框架。 尽管如此,使用 REST API 需要团队导航多个端点并了解每个 API 的独特约定和模式。

GraphQL API 相对较新,但 GraphQL 环境自推出以来已经取得了巨大的发展,提供了可用于服务器和客户端开发的各种工具和库。 GraphQL 和 GraphQL Playground 等工具提供了强大的浏览器内集成开发环境 (IDE),用于探索和测试 GraphQL API。 此外,GraphQL 对代码生成有强大的支持,可以简化客户端开发。

缓存

REST API 依赖 eTags 和上次修改标头等机制来缓存 API 调用。 这些缓存策略虽然有效,但实施起来可能很复杂,并且可能并不适合所有用例。

由于查询的动态特性,GraphQL API 的缓存可能更具挑战性。 然而,部署持久化查询、响应缓存和服务器端缓存可以缓解这些挑战,并简化 GraphQL 架构中更广泛的缓存工作。

何时使用 GraphQL 和 REST API

REST 和 GraphQL API 本质上都不是优越的; 它们是适合不同任务的不同工具。

REST 通常更容易实现,并且当首选具有严格访问控制的直接、可缓存通信协议时(例如 Shopify 和 GitHub 等面向公众的电子商务网站),REST 可能是一个不错的选择。 考虑到获取不足和过度获取的风险,REST API 最适合:

  • 使用较小的应用程序和更简单的数据配置文件的企业
  • 无复杂数据查询需求的企业
  • 大多数客户群以类似方式使用数据和操作的企业

GraphQL API 可实现更灵活、高效的数据获取,从而提高系统性能和开发人员的易用性。 这些功能使得 GraphQL 对于在前端需求快速变化的复杂环境中构建 API 特别有用。 这包括:

  • 带宽有限、希望限制呼叫和响应的企业
  • 希望在一个端点合并数据点的企业
  • 客户要求差异很大的企业

尽管它们使用不同的方法,但 GraphQL 和 REST API 都具有极大增强网络可扩展性和服务器性能的潜力。

使用 IBM API Connect 控制您的 API 环境

无论您选择部署 REST 还是 GraphQL API(或者两者的某种组合),您的企业都可以从广泛的潜在应用程序中受益,包括各种编程语言(如 JavaScript)的实现以及与微服务和无服务器架构的集成。 借助 IBM API Connect,您可以使用这两种 API 类型来优化您的 IT 基础架构。

IBM API Connect 是一个全生命周期 API 管理解决方案,可帮助您创建、管理、保护、社交化 API 并使其货币化,并促进跨数据中心和云环境的数字化转型。 这意味着企业和客户都可以为数字应用程序提供支持并实时刺激创新。

借助 API Connect,企业可以帮助确保他们在 API 管理方面处于领先地位,这在随着时间的推移将变得更大、更复杂和更具竞争力的计算环境中将证明是无价的。

探索 IBM API Connect 订阅 AI 主题更新

本文是否有帮助?

是的不



Source link

Tags: API有什么区别GraphQLREST与
Share76Tweet47

Related Posts

熊测试关键支持时,以太坊价格处于下行休息的风险

熊测试关键支持时,以太坊价格处于下行休息的风险

by john
18 6 月, 2025

信任的理由 严格的编辑政策,侧重于准确性...

Dogecoin设定了舞台以升空,并以钥匙逆转模式

Dogecoin设定了舞台以升空,并以钥匙逆转模式

by 小明 老师
17 6 月, 2025

我叫Godspower Owie,我在尼...

Dogecoin必须保留此支持,否则可能会撞到0.015美元

熊信号在狗狗上徘徊 – 这就是为什么看涨的原因

by 小明 老师
17 6 月, 2025

信任的理由 严格的编辑政策,侧重于准确性...

Cardano(ADA)在关键支持方面遇到麻烦 – 崩溃迫在眉睫吗?

Cardano(ADA)在关键支持方面遇到麻烦 – 崩溃迫在眉睫吗?

by john
17 6 月, 2025

金融市场世界上的灯具Aayush Jin...

以太坊的价格显示出弱点,眼睛的关键支持随着熊的织机

以太坊的价格显示出弱点,眼睛的关键支持随着熊的织机

by john
17 6 月, 2025

信任的理由 严格的编辑政策,侧重于准确性...

Load More
  • Trending
  • Comments
  • Latest
比特币即将崩盘吗? 分析师指出可能出现下降趋势

分析师警告称,股价可能跌至 59,000 美元

26 4 月, 2024
LTC 可能会在新一轮飙升之前重新测试 60 美元

LTC 可能会在新一轮飙升之前重新测试 60 美元

30 3 月, 2024
DappRadar 将担任 Lisk Onchain 春季黑客马拉松评委

DappRadar 将担任 Lisk Onchain 春季黑客马拉松评委

30 3 月, 2024
DOGE 历史模式显示 1 美元即将到来,鲸鱼收购以太坊和这款 DeFi 代币

DOGE 历史模式显示 1 美元即将到来,鲸鱼收购以太坊和这款 DeFi 代币

17 12 月, 2024
LINK 价格回升,为什么 Chainlink 可能飙升超过 10%

LINK 价格回升,为什么 Chainlink 可能飙升超过 10%

30 3 月, 2024
Chainlink (LINK) 价格突破看涨旗杆,这是下一个目标

Chainlink (LINK) 价格突破看涨旗杆,这是下一个目标

30 3 月, 2024

Enterprise Ethereum Alliance Appoints First Executive Director

Opera's Crypto Browser Enters iOS, Worldcoin's Open Source, LUNA Gift + More News

Opera's Crypto Browser Enters iOS, Worldcoin's Open Source, LUNA Gift + More News

US SEC’s Proposal On 'Exchange' Definition Could Be Unconstitutional – Think Tank

US SEC’s Proposal On 'Exchange' Definition Could Be Unconstitutional – Think Tank

LTC 可能会在新一轮飙升之前重新测试 60 美元

LTC 可能会在新一轮飙升之前重新测试 60 美元

看涨势头或看跌压力会占上风吗?

看涨势头或看跌压力会占上风吗?

狗狗币价格突破三年新高

狗狗币价格突破三年新高

熊测试关键支持时,以太坊价格处于下行休息的风险

熊测试关键支持时,以太坊价格处于下行休息的风险

18 6 月, 2025
比特币价格在电阻时偶然发现 – 蘸水会加深吗?

比特币价格在电阻时偶然发现 – 蘸水会加深吗?

18 6 月, 2025
天才集团比特币国库涨到52%,达到1,000 BTC目标

天才集团比特币国库涨到52%,达到1,000 BTC目标

17 6 月, 2025
戴维斯商品将3000万美元分配给比特币和RWA策略

戴维斯商品将3000万美元分配给比特币和RWA策略

17 6 月, 2025
Dogecoin设定了舞台以升空,并以钥匙逆转模式

Dogecoin设定了舞台以升空,并以钥匙逆转模式

17 6 月, 2025
Dogecoin必须保留此支持,否则可能会撞到0.015美元

熊信号在狗狗上徘徊 – 这就是为什么看涨的原因

17 6 月, 2025

比特900财经

比特900财经

最新最快的区块链财经科普平台




比特900财经是一家专业的数字货币和区块链媒体平台,致力于为读者提供最新的加密货币新闻、区块链技术动态和市场趋势分析。我们关注比特币行情、区块链投资、智能合约等热门话题,并提供加密货币ICO和数字货币钱包等方面的深入解读。通过我们权威的区块链监管政策报道和专业的加密货币市场分析,帮助读者了解行业趋势,做出明智的投资决策。





Categories tes

  • 7×24
  • Altcoin(ALT)
  • Cardano(ADA)
  • Chainlink(LINK)
  • DeFi
  • Dogcoin
  • Litecoin(LTC)
  • NFT
  • Ripple(XRP)
  • Web 3
  • Zcash (ZEC)
  • 交易所
  • 以太坊(ETH)
  • 区块链
  • 市场行情
  • 技术创新
  • 比特币(BTC)
  • 法律合规
  • 深度观察

Tags

ADA BlockDAG BTC Cardano Coin Coinbase Dapp DappRadar Dapps DeFi DOGE ETF ETH Finance Inu Labs Meme Memecoin Network NFT PEPE Polygon Qubetics Ripple SEC SHIBA SOL Solana SUI Web3 XRP 万美元 与 亿美元 什么是 代币 区块链新闻观点电视和工作 和 在 年 月 比特币 的 美元 随着

近期文章

  • 熊测试关键支持时,以太坊价格处于下行休息的风险
  • 比特币价格在电阻时偶然发现 – 蘸水会加深吗?
  • 天才集团比特币国库涨到52%,达到1,000 BTC目标
  • 戴维斯商品将3000万美元分配给比特币和RWA策略
  • Dogecoin设定了舞台以升空,并以钥匙逆转模式
  • 关于我们
  • FAQ
  • 联系我们

© 2024 Bit900 - support By Pangoo

No Result
View All Result
  • 首页
  • 7×24
  • 市场行情
    • 比特币(BTC)
    • 以太坊(ETH)
    • Litecoin(LTC)
    • Ripple(XRP)
    • Dogcoin
    • Altcoin(ALT)
    • Cardano(ADA)
    • Chainlink(LINK)
    • Zcash (ZEC)
    • EOS
  • 交易所
  • 区块链
  • 深度观察
  • 技术创新
  • NFT
  • Layer 2
  • Web 3
  • DeFi
  • 深度观察

© 2024 Bit900 by Bit900.