https://zhuanlan.zhihu.com/p/88009926
https://blog.5udou.cn/#/blog/detail/GraphQLXue-Xi-Zhi-Ji-Chu-Pian-99
http://spec.graphql.org/June2018/
http://blog.thankbabe.com/2018/04/20/graphql/
https://graphql.org/graphql-js/
https://github.com/graphql/graphql-js
https://graphql.cn/code/#javascript
GraphQL 请求体: 使用GraphQL语言定义的一个或多个操作或者数据片段,类型是字符串。
操作: 可以被GraphQL执行引擎理解的一次查询、修改或订阅。
求体显示了GraphQL的主要构建块,它指定了你尝试获取的数据。
字段(Fields):客户端请求的数据单元,最后作为JSON响应数据中的一个字段。请注意,它们始终称为“字段”,无论它们所在的层次有多深。在你的查询中,对根节点字段的处理和最底层字段应该是一样的。
参数(Arguments):一组与特定字段关联的键值对。这些参数会跟它们相关的字段一起被传递到服务器端执行,并影响服务器对字段的处理方式。如上面的示例,参数可以是字面量,接下来还有参数作为变量形式的栗子。请注意,参数可以显示在任何字段中,即使是嵌套层次很深的字段。
为了让你以非常简洁的形式定义一个GraphQL查询,上面的栗子是GraphQL的一种非常简单的形式。但是在GraphQL操作中三种可选的部分都没有在上述栗子中使用。如果你不仅仅是用GraphQL执行查询操作,或是希望传递动态变量到GraphQL查询中,你就需要利用到这些新的GraphQL特性。
操作类型(Operation type):共三种类型:查询(query)、更新(mutation)、订阅(subscription)。它描述了你试图进行何种操作。然而这些看起来意思很接近的操作,GraphQL服务器处理它们时还是会有一些不同。
操作名称(Operation name):为了方便调试和服务端打日志,最好给你的查询赋予语义化的命名。这样,无论你是在网络日志中或者GraphQL服务器上发现错误,你都可以通过名字很轻松的在代码库中定位问题,而不是靠猜测(类似的工具有 Apollo Optics)。可以把操作名称想象成你最喜欢的编程语言中,一个语义化的函数名。
变量定义(Variable definitions):当客户端向GraphQL服务器发送查询时,会存在查询文档不变,当某些字段会动态变化的情况。这些就是查询中的变量。因为GraphQL是静态类型的,它可以实时验证你是否传递了正确的变量。这正是你声明变量类型时所计划提供的能力。
变量使用特定的序列化协议(在目前的 GraphQL 服务实现中,通常是使用JSON )通过查询文档独立传输。
https://juejin.im/post/5b5815dd5188251b1f2263f0
https://zhuanlan.zhihu.com/p/40418866
https://cloud.tencent.com/developer/article/1651940
http://codingdict.com/article/23277
https://developer.aliyun.com/article/726530
https://graphql.cn/learn/queries/
https://juejin.im/post/5ac1b03bf265da237b223e82
https://juejin.im/post/5b5545a0e51d4518e3119933
https://segmentfault.com/a/1190000017766370
https://www.cnblogs.com/dh-dh/p/10300412.html
https://www.jianshu.com/p/b420a33eeeab
https://graphql.org/learn/queries/