Skip to content

GraphQL Query Language API

GraphQL query language reference for declaratively querying and operating on API data.

1 class · 10 methods

GraphQL Operations

10 methods

GraphQL 操作参考,涵盖查询、变更、订阅、片段、指令等语法。

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

NameTypeDescription
ifboolean是否包含(@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