为什么 GraphQL 的模式语言比 RESTful API 更优秀?

阅读时长 3 分钟读完

随着互联网的快速发展,Web 应用程序的需求也越来越复杂。在过去,我们都是通过 RESTful API 来构建 Web 应用程序的。但是,RESTful API 在某些情况下并不太理想。特别是在前端领域,RESTful API 的缺点就更加明显了。这就是为什么有些前端开发人员转而使用 GraphQL 的模式语言。

RESTful API 的缺点

RESTful API 最早由 Roy Fielding 在他的博士论文中提出。RESTful API 是一种约束性架构,它遵循 HTTP 协议。RESTful API 可以使 Web 应用程序的状态变得可转移,这意味着它可以像浏览网页一样访问 Web 应用程序的资源。

随着前端技术的不断发展,Web 应用程序的需求也日趋复杂。虽然 RESTful API 有一些优点,但它也有很多缺点。

  1. 过度获取数据。 RESTful API 返回的数据可能包含不必要的信息,这会浪费网络带宽和服务器资源。例如,如果一个 Web 页面只需要某个单一对象的一部分属性,那么 RESTful API 也会返回整个对象和所有的属性。

  2. 版本管理困难。 当你的 Web 应用程序与多个不同版本的 API 通信时,你需要在客户端和服务器中进行版本管理。这可能会导致很多麻烦,尤其是当旧版本的 API 还在被使用时。

  3. 对于关系型数据的处理比较麻烦。 当一个单一的 RESTful API 请求返回多个对象时,这可能会导致很多次请求。客户端需要执行多次请求来获取所有需要的数据。这使得处理关系型数据比较麻烦。

为了解决这些问题,出现了 GraphQL。

GraphQL 的优点

GraphQL 最初由 Facebook 提出。它是一种查询语言,允许客户端指定自己需要的数据。GraphQL 可以查询多个对象,并返回必要的数据。当客户端需要更多数据时,它可以指定更多查询字段。

GraphQL 有很多的优点,特别是在前端领域。

  1. 只获取所需数据。 GraphQL 可以确保每个请求只返回客户端需要的数据。这会降低网络带宽和服务器资源的使用。

  2. 配置便捷。 GraphQL 可以轻松地在客户端和服务器之间进行更新和修改。因此,在处理版本管理时,它相对于 RESTful API 更为容易。

  3. 处理关系型数据方便。 GraphQL 可以一次性查询多个对象。因此,在处理关系型数据时,只需要执行一次查询,而不像 RESTful API 一样需要多次查询。

下面是具体的代码示例:

在 RESTful API 中,为了获取一个订单的信息,我们需要执行以下几个步骤:

在 GraphQL 中,我们只需要执行以下一条查询即可:

-- -------------------- ---- -------
----- -
  ------------ ---- -
    ---------------- ------ -
      ----- -
        --
        ----
        -----
      -
    -
    ----------------- -
      --
      ------------
      ----
      -----
      ---
    -
  -
-

这条查询会返回对应订单的所有商品和运输地址,而不需要发出多个请求。

总结

虽然 RESTful API 和 GraphQL 都有其优点和缺点,但对于前端开发人员来说,GraphQL 提供了更好的灵活性,更好的性能和更高的生产力。

如果你正在处理复杂的 Web 应用程序,那么考虑下使用 GraphQL 这种新兴的查询语言。它可以在是否使用它的 Web 应用程序中的性能和开发中的生产力方面提供很大的帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6503d47095b1f8cacd09f5a6

纠错
反馈