Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraphQL初探 #2

Open
sliwey-zz opened this issue Feb 3, 2019 · 0 comments
Open

GraphQL初探 #2

sliwey-zz opened this issue Feb 3, 2019 · 0 comments

Comments

@sliwey-zz
Copy link
Owner

最近感觉 GraphQL 进入眼帘的频率变得越来越高,还发现了 Apollo GraphQL 这个项目,提供了一整套 GraphQL 的解决方案,包括服务端和客户端,客户端还不单单是 web,还有 Andorid 和iOS。整个给人的感觉已经比较成熟了,所以现在这个点貌似是个不错的学习时机,正好最近有个内部项目要做,包含前后端,所以打算采用 Apollo Server + Apollo Client + React 来完成,边学边做,那就先从 GraphQL 开始吧~~

什么是GraphQL

按照官方说法 GraphQL 是一种用于 API 的查询语言,乍一看会不太好理解,当你看了一些文档之后,会发现其实 GraphQL 是语言无关的,只是定义了一种规范,规范了怎么描述数据以及数据之间的关系,具体的实现可以由各种编程语言来实现。所以所谓的「查询语言」中的「语言」并不是指「编程语言」。

关于具体的概念或者语法就不在这赘述了,可以看文档来了解:

GraphQL能带来什么

在看文档的时候可以思考下这个问题:「GraphQL能带来什么?」

下面是我的一些想法,如有不对的地方,欢迎指出哈~

  • 客户端可以按需获取数据,减少接口请求的数据量
  • 客户端可以自定义获取的数据结构,减少接口请求的数量
  • 拥有一套类型系统,这对于一个 API 有多重要就不用多说了吧
  • 提供了 non-nullable 的功能,终于可以摆脱被 null 值支配的恐惧了
  • 注释即文档,可以方便快速地知道服务端定义的所有 schema,基于此便可以知道客户端可以获取的数据以及对数据的操作

以上这些都有一个前提条件:「需要事先在服务端定义好这些 schema」所以怎么去定义 schema 在 GraphQL 的实际应用中就变得格外重要。

Thinking in GraphQL

  • 一切皆是图,把业务模型通过图来描述
  • schema优先,在开始设计的时候,要先考虑 schema 怎么定义
  • GraphQL 是围绕 schema 展开的,可以把 schema 想像成一个用来描述应用中全部数据类型和数据之间关系的蓝图
  • 从数据消费方来考虑 schema 的设计,而不是数据生成方

小结

以上是我这几天学习 GraphQL 的一些初步印象,可能还比较浅显,暂且先记录下来,后面可能会有更改。关于 Apollo 的内容,之后再介绍吧,祝大家新年快乐!🐷事顺利哈!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant