我是靠谱客的博主 故意饼干,最近开发中收集的这篇文章主要介绍GraphQL是更好的REST吗?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、GraphQL的由来

        GraphQL是一种用于API的开源数据查询和操作语言,以及用于使用现有数据完成查询的运行时。GraphQL 于 2012 年由Facebook内部开发,然后于 2015 年公开发布。2018 年 11 月 7 日,GraphQL 项目从 Facebook 转移到新成立的 GraphQL 基金会,由非营利性Linux 基金会托管。

2、使用 REST获取数据

        使用 REST API,您通常会通过访问多个端点来收集数据。在示例中,这些可能是/users/<id>获取初始用户数据的端点。其次,可能有一个/users/<id>/posts端点可以返回用户的所有帖子。然后,第三个端点将/users/<id>/followers返回每个用户的关注者列表。

使用 REST,您必须向不同的端点发出三个请求以获取所需的数据。由于端点返回了不需要的附加信息,因此您也 过度获取。

3、使用GraphQL获取数据

        在 GraphQL 中,您只需向 GraphQL 服务器发送一个包含具体数据要求的查询。然后,服务器使用满足这些要求的 JSON 对象进行响应。

使用 GraphQL,客户端可以在 查询中准确指定它需要的数据。请注意,服务器响应的 结构完全遵循查询中定义的嵌套结构。

4、REST的主要问题

        REST 最常见的问题之一是过度获取和获取不足。发生这种情况是因为客户端下载数据的唯一方法是点击返回固定数据结构的端点。以一种能够为客户提供准确数据需求的方式设计 API 是非常困难的。

        过度获取意味着客户端下载的信息多于应用程序中实际需要的信息。在 REST API 中,此应用程序通常会访问/users端点并接收包含用户数据的 JSON 数组。然而,此响应可能包含有关返回的用户的更多信息,例如他们的生日或地址 - 对客户端无用的信息,因为它只需要显示用户的姓名。

        另一个问题是获取不足和n+1的requests 问题。获取不足通常意味着特定端点没有提供足够的所需信息。客户端将不得不发出额外的请求来获取它需要的一切。这可能会升级为客户端需要首先下载元素列表,但随后需要为每个元素发出一个额外请求以获取所需数据的情况。

        例如,考虑同一个应用程序还需要显示每个用户的最后三个关注者。API 提供了额外的端点/users/<user-id>/followers。为了能够显示所需的信息,应用程序必须向/users端点发出一个请求,然后为每个用户点击/users/<user-id>/followers端点。

5、GraphQL的主要问题

        虽然允许客户端定义所需数据的结构,并从服务器返回相同的数据结构,从而防止返回过多的数据。但这对查询结果的Web 缓存的有效性有影响。

        查询语言的灵活性和丰富性也增加了简单 API 可能不值得的复杂性,小型应用的使用有些过重的感觉。

6、更多的探讨

        GraphQL 是一种应用层服务器端技术,用于对现有数据执行查询,而 REST 是一种软件架构风格,它定义了一组用于创建 Web 服务的约束。GraphQL 可以根据模式进行组织,而 REST 可以根据端点进行组织。

        根据需要,GraphQL 和 REST API 开发生命周期方法都很有用,并且都有其优点和缺点。GraphQL 正以指数方式获得普及,主要是因为它的“没有过度和不足”的能力。它为客户端提供了更有效的协作机制,并且被证明是一个强大的工具,尤其是在软件行业正在采用敏捷框架的情况下。简而言之,GraphQL 是实现特定查询导向目标的工具;然而,它并不是解决所有 API 相关问题的解决方案,当然也不能替代 REST。

        网络上对于GraphQL的说法有很多,有人说无非是重复造轮子;有的人觉得是节省了很大工作量,后端建好表和视图之后就什么都不用管了。但总的看来,更多的角度是要依据与实际业务的范围大小和团队的大小,考虑那个更适合自己的项目。  

最后

以上就是故意饼干为你收集整理的GraphQL是更好的REST吗?的全部内容,希望文章能够帮你解决GraphQL是更好的REST吗?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部