GraphQL Operations
10 methodsGraphQL 操作参考,涵盖查询、变更、订阅、片段、指令等语法。
query查询操作,用于读取数据,不产生副作用。
Returns
返回与服务端 schema 对应的数据,以 JSON 形式封装在 data 字段。
Example
graphql
query GetUser {
user(id: "1") {
id
name
email
}
}mutation变更操作,用于写入或修改数据,可能产生副作用。
Returns
返回变更后的数据,以 JSON 形式封装在 data 字段。
Example
graphql
mutation CreateUser {
createUser(input: { name: "张三" }) {
id
name
}
}subscription订阅操作,建立长连接以接收服务端推送的实时数据流。
Returns
持续返回订阅事件数据,直到客户端取消订阅。
Example
graphql
subscription OnMessage {
messageAdded(roomId: "42") {
id
text
createdAt
}
}fragment片段,定义可复用的选择集,通过 ...FragmentName 引用。
Returns
在引用处展开为对应的选择集,避免重复字段定义。
Example
graphql
fragment UserFields on User {
id
name
email
}
query Me {
me {
...UserFields
}
}$variable变量,以 $ 开头声明,在操作外部传入动态值,实现查询复用。
Returns
在查询中以变量引用替代硬编码值,运行时由变量注入。
Example
graphql
query User($id: ID!) {
user(id: $id) {
name
}
}
# 变量 JSON
# { "id": "1" }@include(if:) / @skip(if:)指令,根据条件动态包含或跳过字段。
Parameters
| Name | Type | Description |
|---|---|---|
| if | boolean | 是否包含(@include)或跳过(@skip)该字段 |
Returns
运行时按条件决定字段是否出现在结果中。
Example
graphql
query($withAvatar: Boolean!) {
me {
name
avatar @include(if: $withAvatar)
bio @skip(if: $withAvatar)
}
}alias: field别名,为字段结果指定自定义键名,便于同字段不同参数查询。
Returns
在返回 JSON 中以别名作为键,而非字段原名。
Example
graphql
query {
small: hero(size: SMALL) { name }
large: hero(size: LARGE) { name }
}... on Type内联片段,在联合类型或接口字段上按具体类型选择字段。
Returns
仅当对象属于指定类型时返回对应字段。
Example
graphql
query {
search(text: "x") {
... on User { name }
... on Repo { fullName }
}
}enum枚举类型,定义一组有限的合法标量值。
Returns
在 schema 中约束字段取值为预定义集合之一。
Example
graphql
enum Status {
PENDING
ACTIVE
DISABLED
}
type User {
status: Status!
}interface / union抽象类型,interface 定义共享字段契约,union 表示多种类型之一。
Returns
在 schema 中定义抽象节点,运行时需配合内联片段解析具体类型。
Example
graphql
interface Node {
id: ID!
}
type User implements Node {
id: ID!
name: String
}
union SearchResult = User | Repo