Variables & Fragments
Variables
Jangan concatenate values ke query string — gunakan variables. Sama seperti parameterized queries di SQL (prevent injection, reusable).
# Query dengan variables
query GetUser($id: ID!) {
user(id: $id) {
name
email
}
}
# Variables (JSON terpisah)
{ "id": "123" }
// Frontend
const { data } = await client.query({
query: GET_USER,
variables: { id: userId },
});
Default Values
query GetUsers($limit: Int = 10, $offset: Int = 0) {
users(limit: $limit, offset: $offset) {
name
}
}
# Bisa dipanggil tanpa variables — pakai defaults
Fragments
Reusable field selections. DRY untuk queries yang share fields.
# Define fragment
fragment UserBasicInfo on User {
id
name
email
avatar
}
# Use fragment
query {
me {
...UserBasicInfo
settings {
theme
}
}
user(id: "456") {
...UserBasicInfo
posts {
title
}
}
}
# Equivalent to writing id, name, email, avatar di kedua tempat
Inline Fragments
# Untuk union types / interfaces
query {
search(query: "javascript") {
... on Post {
title
content
}
... on User {
name
email
}
... on Comment {
text
}
}
}