graphql

什么是 GraphQL

GraphQL,一个API查询语言,它不同于传统的REST API,GraphQL允许客户端按需获取数据

前端开发者不用依赖后端的接口设计,他们可以自由地获取他们需要的数据结构

由 Facebook 创建于 2015 年。

特点

  1. 请求你所要的数据
image.png
  1. 获取多个资源 只用一个请求
image.png

优势

相对于 Rest API,GraphQL 能精准获取、提升开发效率、减少沟通成本

问题

  1. 业务基建需要大量改造(收益与付出难成正比)

前后端基建都要改

  1. 国内前端普遍达不到全栈能力,无法自已完成graphql的后端模组

适用场景

  1. 一个后台对应多端(PC、APP、小程序等)

因为每个端的具体查询需求不同,每个端要写不同的api

  1. 数据复杂, 需要灵活组织

大体量项目

使用

服务端

定义Type及其Field

服务端需要定义各种数据类型,包括标量类型(基本数据类型)、对象类型(复杂数据类型)、接口类型、联合类型、枚举类型、输入对象类型等。

定义Schema

Schema是GraphQL的核心,它定义了客户端可以进行的操作(query、mutation、subscription)以及这些操作如何获取数据。

定义Resolve

Resolver是实际处理数据请求的函数。当客户端发起一个请求时,Resolver负责获取数据并返回给客户端。

客户端

构建请求Document

客户端在发送请求时,需要构建一个请求Document,它包括操作和片段。

待了解

1.apollo

2.服务端 直接用type-graphql,前端直接用graphql-codegen生成ts类型加hooks代码,几乎没有学习成本

1
npm i -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/import-types-preset

参考

https://juejin.cn/post/7322275119593242687?searchId=2024022915161947CDB0001D31DEEF8C63

https://juejin.cn/post/7321896126311579663?searchId=2024022915161947CDB0001D31DEEF8C63


graphql
http://example.com/2024/02/29/graphql/
Author
John Doe
Posted on
February 29, 2024
Licensed under