graphQL科普介绍篇

刘绍晖
2023-12-01


纯个人理解学习记录,不含教程(这部分肯定是官方最靠谱啦)

graphQL与react都是由Facebook设计,react为构建用户界面提供了一种声明式方案,类似地graphQL为API通信提供声明式方案,对想要的数据的声明式描述。

例如并行发起数据请求时,我们希望能同时获得所需的全部数据,graphQL可以去帮我们处理多个数据请求,我们只需要关心我们想要的数据。

此外graphQL也衍生扩展了很多功能,我们常说的分层网络协议,web开发中我们面对的是应用层即浏览器,考虑到应用场景的常见数据获取需求,graphQL封装了一系列的方法解决了许多开发需求。所以我们值得去了解学习以及运用graphQL。这其实是技术发展的趋势,代码功能更加细分,更加精准。

前端开发中数据获取时,通常需要思考的问题如下,graphQL都给了我们方案

  1. 如何从服务器获取数据
  2. 如果数据获取失败,怎么办
  3. 如何查询数据之间的依赖和关联关系,e.g: n+1查询性能
  4. 如何在整个应用程序中保持数据一致
  5. 如何更快地编写特定于应用程序的功能,而不是花时间从服务器来回推送数据

restful 风格与graphQL

http协议:

  • 客户端与服务器无状态通信,服务器不应该存储交互上下文,session状态存储于客户端
  • 统一接口,客户端和服务器所操作的资源具有唯一标识符

graphQL是在请求主体中包含查询的http请求,所以前端可以利用fetch API发起与后端协商好的graphQL请求,也可以直接使用封装好的模块库 e.g: graphql-request

后端需要一个使用graphQL的服务器,每一种流行语言都有graphQL服务器端库,例如Ruby、python、scala。graphQL服务器可以基于任何数据源之上,无论是SQL、MongoDB、Redis,还是第三方API。这也衍生出另一个有点,graphQL服务器可以同时作为多个数据源存储的抽象

了解graphQL

apollo graphQL提供了一套完整的实现支持
https://www.apollographql.com/

github也开放了自己的 graphQL API https://docs.github.com/en/graphql/overview/explorer

 类似资料: