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