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
}
标量类型
| 类型 | 描述 |
|---|---|
| Int | 32 位有符号整数 |
| Float | 双精度浮点数 |
| String | UTF-8 字符序列 |
| Boolean | true 或 false |
| ID | 唯一标识符(序列化为 String) |