1、字段
{
hero{
name
friend{
name
}
}
}
2、参数:是查询有了条件
{
hero(id:"1000"){
name
friend(name:"yanhz"){
name
}
}
}
3、别名:解决相同字段,返回结果冲突问题
{
hero1:hero(id:"1001"){
name
}
hero2:hearo(id:"2001"){
name
}
}
4、片段(fragments):可复用单元
fragment fieldname on character{
name
appearIn
friends{
name
}
}
{
hero1:hero(id:"1001"){
... fieldname
}
hero2:hearo(id:"2001"){
... fieldname
}
}
5、操作名称(operation name):就是给查询起个名称,以免对代码产生歧义
包含操作类型和操作名称
操作类型:query,mutation和subscription,来描述你做什么类型的操作。
操作名称:1、见名知意 2、调试跟踪
query query1 {
hero(id:"1000"){
name
friend(name:"yanhz"){
name
}
}
}
6、变量(variables):动态值即变量
三件事:
1、声明变量-(在操作名称处声明)
2、使用变量
3、传递变量值
query query1 ($var: type) {//声明变量
hero(id:$var){//使用变量
name
friend(name:"yanhz"){
name
}
}
}
============传递变量值
{
"$var":"1234234"
}
变量的定义:如果是可选上面的方式即可,如果是必须,要在类型后面加上!;类型,必须是标量、枚举或者对象类型
默认变量值:直接赋值即可
7、指令(directives):控制逻辑使用,可以和变量一起使用
一个指令可以附着在字段或者片段包含的字段上。
目前有两个指令:
@include(if: Boolean) 仅在参数为 true 时,包含此字段。
@skip(if: Boolean) 如果参数为 true,跳过此字段。
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}
指令在你不得不通过字符串操作来增减查询的字段时解救你。服务端实现也可以定义新的指令来添加新的特性。
8、变更(mutations)