REST 是一种软件架构风格,API 遵循该风格,以便开发人员能够以标准方式与服务交互。GraphQL 是一种 API 查询语言,也是执行这些查询的运行时。REST 和 GraphQL 相似之处在于它们将数据源标识为 URL,应用程序可以使用这些 URL 来检索数据或功能。但是,它们之间存在许多差异。
GraphQL 在单个端点上交换数据,。GraphQL 解析器检索所需字段的数据。如果一个解析器失败,其余查询仍可检索并返回有用的数据。在许多情况下,一个 GraphQL 查询通常可替代多个 REST 查询。
GraphQL 可防止数据过度获取和获取不足 - 即与应用程序所需信息相比,端点响应调用时分别包含过多或过少的信息。REST API 提供不同级别的分辨率。某些级别获取的数据较多,而其他级别获取的数据较少。这意味着应用程序可能会收到过多数据。举个例子,当只需要客户的姓名和电子邮件地址时,却获取了整个客户资料。也可能检索到的数据太少,导致应用程序必须进行多次 API 调用,而不是一次。
GraphQL 使用一种称为架构定义语言 (SDL) 的自定义查询格式,尽管该自定义查询语言用于请求,但返回的是 JSON。这使得客户端更容易使用响应。GraphQL 客户端库与 ReactJS UI 框架(以及许多其他库)具有本机集成, 德国电报数据 这使得当今许多前端和后端开发人员都可以使用 GraphQL。
GraphQL 和 REST 之间的开发人员体验有所不同。为了了解 REST API 的工作原理,开发人员通常使用门户(文档环境)来发现 API 并与之交互。在 GraphQL 中,此门户通常是一个内置游乐场,也适合开发。(请参阅: https: //afosto.app/graphql )。它允许开发人员以交互的方式探索新查询。文档也不同。REST 通常使用 OpenAPI 规范和门户。OpenAPI 存在一些扩展。例如,Swagger Docs 根据这些 OpenAPI 规范构建了交互式文档。GraphQL 开发人员通常使用基于模式的交互式文档(例如 Apollo)来发现、开发和与 GraphQL 端点交互。