GraphQL(一):基本介绍

定义:
特点:
  • 请求需要的数据,不多不少。

    Graph可定制字段,只取需要的字段。

  • 获取多个资源,只用一个请求

    请求消耗时间。

  • 描述所有可能类型的系统。便于维护,根据需求平滑演进,添加或隐藏字段。


一种 API 查询语言

今天,大多数应用都需要 从服务器获取存在数据库中的数据API 需要提供获取数据的接口,以满足应用的需要。

而 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余


一个更有效的 REST 模式替代者

▶️ REST vs GraphQL之数据获取

举例 ?:有一个博客应用,需要展示指定用户的帖子标题。同一页面里还会显示该用户的最新3个关注者的名字。

使用 REST API 时,通常可以调用多个接口来获取数据。针对上述场景,首先可以调用 /user/<id> 接口来获取用户数据。紧接着,调 用/users/<id>/posts 返回该用户的所有帖子。最后,调用第三个接口 /users/<id>/followers 返回该用户的关注者列表。

使用 REST,必须向三个不同的接口发出三个请求以获取所需的数据。同时你也拿到了额外的数据,因为接口会返回你不需要的其他信息。

而在 GraphQL 中,你只需向拥有数据的 GraphQL 服务端发送一条查询语句。服务端就会响应并返回带有查询结果的 JSON 对象。

使用 GraphQL,客户端可以精确地指定查询中需要的数据;服务器响应的结构会精确地匹配查询中定义的结构。


▶️ 不再获取多余或不足的数据

过多获取,意味着客户端拿到了超出真正需要额外的数据。

想象一下,在一个页面中,只需要展示一组用户名称列表。但在 REST API 中,通常会调用 /users 接口,来获取包含用户数据在内的 JSON 数组。然而,这个返回结果中可能也包含了用户的其他信息,例如。用户的生日,地址等。而我们仅仅是想展示用户名。

另外一个问题是获取的数据不足,然后多发一次请求的问题。

例如,刚才的 ?中,需要展示出每个用户的最后三个关注者。 API 也提供了接口 /users/<user-id>/followers。为了能够展示所需的信息,应用需要向 /users 接口发起请求,然后针对每个用户再去调用 /users/<user-id>/followers 接口。


  • 前端的快速产品迭代

    使用REST API的常见模式是,根据应用页面的需要来设计接口。但是这种模式随着UI层面的每一个改动,就要看接口数据是否匹配,后端就需要进行调整,以解决新的数据需求。

    如果使用GraphQL,客户端的更改不需要服务端有任何额外的工作。客户端可以指定其确切的数据要求。

    扫描二维码关注公众号,回复: 9090120 查看本文章
  • 后端深度分析

    GraphQL 可以对请求的数据进行细粒度的分析。由于每个客户端都准确地指定了它感兴趣的数据,因此,我们可以深入了解关于数据的使用方式,用来优化 API 和去除不需要的字段。

  • Schema和类型系统的好处

    GraphQL 使用丰富的类型系统来定义 API 的功能。 API 中暴露的所有类型都使用 GraphQL 模式定义语言(SDL)在 Schema 中记录下来。Schema 是客户端和服务端之间的协定,以定义客户端如何访问数据。



使用

安装

npm init -y
npm install express graphql express-graphql -s



?推荐链接

发布了108 篇原创文章 · 获赞 43 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/Bule_daze/article/details/102716289