GraphQL与REST的区别


如果您想开发和设计可用于通过互联网交换数据的API,您可以选择GraphQL和REST。REST允许应用程序使用HTTP动词与服务器交换数据。GraphQL用于定义客户端应用程序如何从远程服务器请求数据。在本文中,我们将讨论GraphQL和REST的区别。

什么是GraphQL?

GraphQL是一种开源查询语言,它使用API来更改数据。它使用服务器端运行时引擎来操作数据。GraphQL仅提取客户端请求的数据。GraphQL与许多框架和语言兼容,例如JavaSpringExpressJSNodeJSDjango。GraphQL由Facebook于2012年开发。

GraphQL的优势

GraphQL的优势如下:

  • GraphQL使用单个端点执行所有操作
  • 仅检索客户端请求的数据
  • GraphQL中的模式提供有关其包含的数据的信息

什么是REST?

REST是在2000年代开发的,它能够使用客户端-服务器、无状态和可缓存的协议。在REST中开发的API被称为RESTful API,它们可以执行以下操作:

  • 创建
  • 读取
  • 更新
  • 删除

REST API返回客户端请求的所有数据。

REST的特性

REST的特性如下:

  • 客户端-服务器架构
  • 无状态操作
  • RESTful资源缓存
  • 分层系统
  • 按需代码

REST的优势

REST的优势如下:

  • REST易于使用
  • REST支持所有支持HTTP的语言
  • REST拥有许多工具,因此开发人员可以轻松地处理API

GraphQL和REST的相似之处

GraphQL和REST有很多相似之处,列举如下:

  • GraphQL和REST都支持客户端-服务器模型来通过互联网交换数据。
  • 使用API,可以通过REST和GraphQL更新、添加、修改和删除数据。
  • GraphQL和REST中使用的架构原则相似。
  • 两者都使用客户端-服务器模型。
  • 两者都使用HTTP作为通用通信协议
  • 两者都使用类似的数据交换格式,即JSON
  • 两种技术的架构原则相同
  • 两者都使用HTTP作为传输层

GraphQL和REST的区别

GraphQL和REST的区别可以在下表中找到。

GraphQL REST
通过GraphQL制作的API被称为GraphQL API 通过REST开发的API被称为RESTful API
GraphQL使用单个端点执行不同类型的操作。 REST使用不同的端点执行不同类型的操作。
客户端必须通过GraphQL定义其所需的数据类型。 REST API中的数据是借助预定义规则获取的。
GraphQL减少了数据过度获取和欠获取。 REST API进行数据过度获取和欠获取,这被认为是常见问题。
GraphQL的另一个特性是通过订阅支持实时更新。 REST API支持轮询实时数据。
GraphQL包含许多工具和库。它仍然是一项不断发展的技术。 REST已经成熟,并且包含许多库和工具。
GraphQL使用模式,在实现代码优先方法时会生成模式。 REST不使用模式。
GraphQL不太流行 REST更流行
所有响应都使用200状态码。此状态码还包括错误响应。 REST使用HTTP状态码进行错误处理。
GraphQL不需要API版本控制。 REST支持API的多个版本
GraphQL在查询数据方面提供了更大的灵活性。 相比之下,REST在查询数据方面灵活性较低。
所有查询都被批量到单个查询中,并且可以作为单个网络请求发送。 REST API中的所有查询都作为单独的网络请求发送。

结论

GraphQL和REST用于开发API,以便可以通过互联网交换数据。两者都使用HTTP作为通信协议。GraphQL是一种开源语言,API可以使用它来更改请求的数据。GraphQL不会进行数据过度获取和欠获取,而这是REST的一部分。在GraphQL中开发的API称为GraphQL API,在REST中称为RESTful API。

关于GraphQL与REST的常见问题

1. 在哪种技术中,查询被批量到单个查询中?

在GraphQL中,所有查询都被批量到单个查询中,并作为单个网络请求发送。在REST API中,所有查询都作为单独的网络请求发送。

2. 哪种技术不支持API版本控制?

GraphQL不支持API版本控制,但REST完全支持。

3. 哪种技术支持带有订阅的实时更新?

GraphQL支持带有订阅的实时更新。REST支持轮询实时数据。

4. 哪种技术不允许数据过度获取或欠获取?

GraphQL不支持数据过度获取或欠获取,但这是REST API的一个问题。

5. GraphQL和REST API执行不同类型的操作时使用多少个端点?

GraphQL使用单个端点执行所有操作,而REST API使用不同类型的端点。

更新于:2024年8月12日

浏览量:39

启动你的职业生涯

完成课程获得认证

开始学习
广告