首页  

GraphQL 基础     所属分类 graphQL 浏览量 238
操作类型、操作名称、字段、参数、变量、别名

GraphQL 操作类型  Operation type

query
mutation
subscription

query   没有副作用的查询(如获取列表),类比于REST 中的GET请求;
mutation  有数据更改的操作(如修改、新增、删除等),类比于REST 中的POST/PUT/DELETE请求;
subscription  用于从GraphQL 服务器获取实时更新的查询,实现的功能与Websocket类似,可实时通知客户后端数据的更改
操作类型可以不写,默认 query类型

query {
  projects {
    uuid
    name
  }
}

操作名称(Operation name) 类似函数名

query ProjectList {
  projects {
    uuid
    name
  }
}


字段/属性(Fields)

query {
  projects {
    uuid
    name
    creator {
      uuid
      name
    }
  }
}


参数(Arguments)


query {
  projects(filter: { uuid_equal: "UDs8xs4r" }) {
    uuid
    name
  }
}


变量(Variables)


要求所有声明的变量都必须是标量类型(默认标量类型:Int、Float、String、Boolean、ID等)、枚举型或者输入对象类型(自定义的复杂对象)。 
如果是复杂的对象,使用查询,获取服务器端定义的类型

query {
  __schema {
    types {
      name
    }
  }
}


QUERY部分

query {
  projects(filter: $filter) {
    uuid
    name
  }
}

VARIABLES部分
{ "filter": { "uuid_equal": "UDs8xs4r" } }




别名(Aliases)

如果想要在一个查询语句中,根据不同参数获取相同字段的不同数据,但因为字段相同而条件不同导致无法返回数据,此时可以通过别名给相同字段重命名。


需要获取两个项目列表,一个是项目名中含有字符“A”的项目列表并且取名为“projectA”,一个是项目名中含有字符“B“的项目列表并且取名为“projectB”。

query {
  projectA: projects(filter: { uuid_match: "A" }) {
    uuid
    name
  }
  projectB: projects(filter: { uuid_match: "B" }) {
    uuid
    name
  }
}

{
  "data": {
    "projectA": [
      {
        "uuid": "UDs8xs4r",
        "name": "项目A"
      }
    ],
    "projectB": [
      {
        "uuid": "UDs8xs4r",
        "name": "项目B"
      }
    ]
  }
}

同样都是获取projects,因为取了别名并不会有冲突,得到了正确的查询结果。

上一篇     下一篇
SkyWalking GraphQL API 查询实例

Java实现GraphQL服务

杭州西湖三十景

skywalking PromQL 服务 grafana 整合 图表配置

flinkcdc3.0 checkpoint 和 restart 策略 配置及测试

flink job 快照机制 恢复机制 checkpoint 和 savepoint