首页 > 解决方案 > GraphQL 和 rest api 有什么区别

问题描述

我想知道使用qraphQL而不是rest api的所有原因。

据我所知,可以使用graphQL在一个请求中发出一组 HTTP 请求,而不是发出多个请求(以减少 HTTP 请求)。

有人可以再描述一下吗?

提前致谢。

标签: jsonresthttpgraphql

解决方案


互联网上有许多文章更详细地介绍了这个问题。我想在这里做一个简短的概述。

与 REST 相比,GraphQL 提供了几个优势。

主要区别

REST接口中,一切都与资源有关。例如,您可以通过调用这样的端点来获取 ID 为 25 和 ID 83 的资源“汽车”:

GET /cars/25
GET /cars/83

请注意,您必须如何调用接口两次。端点(“汽车”)和您的资源是耦合的。

GraphQL 中,您可以通过一个电话获得两辆汽车,使用以下示例查询:

GET /api?query={ car(ids: [25, 83]) { model, manufacturer { address } } }

请注意,您甚至如何指定要获取的确切数据(型号、制造商及其地址)。与 REST 相比,端点(“api”)不再是特定于资源的。

一些优点

  • 正如问题中已经提到的,您可以借助 GraphQL 查询来减少 HTTP 操作的数量(避免获取不足)。
  • 通过准确指定要获取的数据,您可以减少通过接口传输的开销(避免过度获取)。
  • 通过在 GraphQL 中使用灵活的查询,您更有可能避免将接口消费者与生产者耦合得太紧,因为您没有将特定消费者的要求准确地实现到具有定义端点的 REST 接口中。
  • 因为每个消费者都准确地指定了 GraphQL 需要哪些数据,所以您可以在后端收集有关数据使用情况的更详细的统计信息。

推荐阅读