您应该使用 GraphQL 而不是 REST API 的 4 个理由

2025-05-24

您应该使用 GraphQL 而不是 REST API 的 4 个理由

REST 一直是许多开发人员首选的数据发送方式,HTTP因为他们在创建数据时无需安装额外的软件或库。API尽管 RESTGraphQL通常被引入作为替代遗留技术的技术REST APIs。在本文中,我将解释这两者之间的优势、局限性和差异,这将帮助您决定在下一个项目中选择哪种方式。事不宜迟,让我们开始吧。

什么是 REST?

REST(表述性状态转移)是一种架构风格,用于在 Web 上的计算机系统之间提供标准,使系统之间更容易相互通信。REST为了实现这一点,我们将客户端和服务器的实现分开,并使用无状态操作(包括GETPOSTPUTDELETE)来发送和接收资源。

这种架构背后的想法REST是,您可以通过向资源的 URL 发出请求来检索资源并获得响应(通常是JSON,但取决于API)。

REST 的好处

  • Rest 具有可扩展性,因为它将客户端与服务器分开,并使您能够轻松扩展应用程序。

  • 灵活性是 REST 的另一个优势,因为Data它不受资源或方法的约束,因此REST可以处理不同类型的调用并返回不同的数据格式。

REST 的局限性

过度获取:这是指 API 端点提供的信息远远超出客户端所需的信息。

获取不足:这是指 API 端点未提供所有必需信息的情况。因此,客户端必须发出多个请求才能获取应用程序所需的所有信息。

我们将通过一个例子来更好地理解上述概念

什么是 GraphQL?

GraphQL是一种 API 查询语言,也是一个使用现有数据执行这些查询的运行时。GraphQL 为 API 中的数据提供了完整且易于理解的描述,使客户端能够准确地请求他们所需的数据,仅此而已。此外,它还允许您将不同的实体组合成一个查询。

GraphQL 的优势

  • 检索精确数据,无需额外信息。在 GraphQL 中,您获取的只是请求的内容,没有其他额外信息,这一点非常出色。

  • 客户端开发速度更快。通常,当数据需求发生变化时,只需修改查询,无需进行太多改动,从而实现快速的产品迭代。客户端和服务器开发团队可以独立工作,只要双方都了解数据结构即可。也就是说,客户端和服务器的实现彼此独立。

比较两者的示例

假设我们要显示某个用户的动态,其中包含该用户的帖子及其粉丝的列表。在本例中,我们需要显示该用户的帖子作者、帖子内容以及粉丝。

如果我们使用REST,我们会提出至少 2 或 3 个请求,类似于:

  • /user/<id>获取用户(作者)详细信息,例如用户名。
  • /user/<id>/posts获取该用户发布的帖子列表。
  • /user/<id>/followers获取特定用户的关注者列表。

但在所有这些情况下,我们都过度获取了数据。例如,在第一个请求中,我们只需要姓名,但使用这种方法时,我们会获取与用户相关的所有详细信息。

这正是GraphQL它的潜力所在。我们需要指定查询语句,这样就能得到所需的输出。为了达到同样的效果GraphQL,我们可以使用类似这样的查询:

query {
  User(id: '123') {
    name
    posts {
      title
    }
    followers {
      name
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

通过这样的查询,我们将能够获得具有以下属性的 JSON 响应。简洁明了,对吧?

GraphQL 与 REST总结一下,和
之间有几个突出的区别GraphQLREST

1. 数据获取

REST会导致过度获取获取不足,而 则不会出现这种情况GraphQL。在 中GraphQL你要求的就是你得到的

2. 对象定义(JSON 响应)您可以
中定义,并在中定义对象RESTthe request objectBackendGraphQLFrontend

3.自动缓存

REST自动启用缓存,而GraphQL没有自动缓存系统,但使用 Apollo Client、Relay 等客户端可以实现缓存。缓存使你的客户端能够响应未来对相同数据的查询,而无需发送不必要的网络请求

4.错误处理

REST与 相比,中的错误处理要简单得多,即使存在 ,GraphQL它通常会返回。但是,当使用 之类的客户端时,很容易处理错误。200 OK status codeerrorApollo Client, Relay, etc

GraphQL 最适合以下场景

  • 适用于手机、智能手表和物联网设备等带宽使用率较高的设备的应用程序。

  • 需要在一次调用中获取嵌套数据的应用程序。

  • 一种复合模式,其中应用程序从多个不同的存储 API 检索数据。

Conclusion
GraphQL确实比 有很多优势REST,但它并不总是最佳实现。就像我之前说的,选择REST还是取决于你的应用GraphQL

希望以上内容能帮助你在未来的项目中做出决策。如果你想分享你关于GraphQL或 的经验REST,请在评论区留言。别忘了在Twitter
Linkedin上与我联系。感谢阅读😊!

文章来源:https://dev.to/blessinghirwa/stop-using-rest-for-apis-53n
PREV
Windows 11 中的 React Js 💻🌈
NEXT
4 分钟内您不知道的 8 个简洁的 Javascript 技巧。