GraphQL与REST的区别
如果您想开发和设计可用于通过互联网交换数据的API,您可以选择GraphQL和REST。REST允许应用程序使用HTTP动词与服务器交换数据。GraphQL用于定义客户端应用程序如何从远程服务器请求数据。在本文中,我们将讨论GraphQL和REST的区别。
什么是GraphQL?
GraphQL是一种开源查询语言,它使用API来更改数据。它使用服务器端运行时引擎来操作数据。GraphQL仅提取客户端请求的数据。GraphQL与许多框架和语言兼容,例如Java、Spring、ExpressJS、NodeJS和Django。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使用不同类型的端点。
广告