GraphQL基础速查

查询 (Query)

# 基本查询 query { user(id: "1") { id name email } } # 带变量的命名查询 query GetUser($id: ID!) { user(id: $id) { id name posts { title createdAt } } } # 变量 { "id": "42" }

变更 (Mutation)

mutation CreateUser($input: CreateUserInput!) { createUser(input: $input) { id name email } } # 变量 { "input": { "name": "Alice", "email": "alice@example.com", "role": "ADMIN" } }

订阅 (Subscription)

subscription OnMessageAdded($roomId: ID!) { messageAdded(roomId: $roomId) { id content author { name } createdAt } }

片段 (Fragments)

fragment UserFields on User { id name email avatarUrl } query { user(id: "1") { ...UserFields } admin(id: "2") { ...UserFields permissions } } # 内联片段 query { search(term: "Alice") { ... on User { name email } ... on Post { title body } } }

指令 (Directives)

query GetUser($id: ID!, $showEmail: Boolean!) { user(id: $id) { name email @include(if: $showEmail) address @skip(if: $showEmail) } }

Schema 定义语言

type Query { user(id: ID!): User users(limit: Int = 10, offset: Int = 0): [User!]! } type Mutation { createUser(input: CreateUserInput!): User! deleteUser(id: ID!): Boolean! } type User { id: ID! name: String! email: String! role: Role! posts: [Post!]! } enum Role { ADMIN USER GUEST } input CreateUserInput { name: String! email: String! role: Role = USER }

标量类型

类型描述
Int32 位有符号整数
Float双精度浮点数
StringUTF-8 字符序列
Booleantrue 或 false
ID唯一标识符(序列化为 String)