Arguments, aliases, fragments, and variables — all the query features that make GraphQL powerful.
# Basic query — only get what you need
query GetUsers {
users {
id
name
# Note: we're NOT requesting email
# The server won't include it
}
}
# Query with argument
query GetUser {
user(id: "1") {
name
email
posts {
title
}
}
}
# Aliases: query same field twice with different args
query CompareUsers {
alice: user(id: "1") { name email }
bob: user(id: "2") { name email }
}
# Fragments: reusable field sets
fragment UserFields on User {
id
name
email
}
query {
users { ...UserFields }
}# Variables make queries reusable
# Define in the query:
query GetUser($userId: ID!) {
user(id: $userId) {
name
email
}
}
# Pass variables separately:
{
"userId": "1"
}
# With optional variables:
query SearchPosts($query: String, $limit: Int = 10) {
searchPosts(query: $query, limit: $limit) {
title
body
}
}alice: user(id: "1") — same field, different name, different arguments.fragment Name on Type { ...fields } — reuse field selections.