📖 Scenario: You are building a GraphQL query to fetch data about different types of media items in a library. The library contains Books and Movies. Each type has some common fields and some unique fields.For example, both Books and Movies have id and title. Books have author and pageCount, while Movies have director and duration.
🎯 Goal: Create a GraphQL query that fetches the id and title for all media items, and uses inline fragments to fetch the specific fields for Books and Movies.
📋 What You'll Learn
Create a query named GetMediaItems
Fetch id and title for all media items
Use inline fragments to fetch author and pageCount for Books
Use inline fragments to fetch director and duration for Movies
💡 Why This Matters
🌍 Real World
GraphQL APIs often return data from interfaces or unions where different types share some fields but also have unique fields. Inline fragments let you fetch the right fields for each type in one query.
💼 Career
Understanding inline fragments is essential for working with GraphQL APIs in frontend or backend development, enabling you to write efficient and precise queries.
Progress0 / 4 steps
1
Create the base query for media items
Write a GraphQL query named GetMediaItems that fetches the id and title fields from mediaItems.
GraphQL
Hint
Start by writing a query that fetches the common fields id and title for all media items.
2
Add inline fragment for Books
Inside the mediaItems field, add an inline fragment for Book that fetches the author and pageCount fields.
GraphQL
Hint
Use ... on Book { author pageCount } inside mediaItems to fetch book-specific fields.
3
Add inline fragment for Movies
Inside the mediaItems field, add an inline fragment for Movie that fetches the director and duration fields.
GraphQL
Hint
Use ... on Movie { director duration } inside mediaItems to fetch movie-specific fields.
4
Complete the query with all inline fragments
Ensure the query GetMediaItems fetches id and title for all media items, and uses inline fragments for Book and Movie to fetch their specific fields.
GraphQL
Hint
Review your query to make sure all parts are included and correctly structured.
Practice
(1/5)
1. What is the main purpose of using inline fragments in a GraphQL query?
easy
A. To select fields conditionally based on the object type in a mixed list
B. To create new types in the schema
C. To update data on the server
D. To paginate query results
Solution
Step 1: Understand inline fragments usage
Inline fragments allow querying different fields depending on the type of an object in a list or union.
Step 2: Identify the purpose in queries
This lets you get specific fields for each type without separate queries.
Final Answer:
To select fields conditionally based on the object type in a mixed list -> Option A
Quick Check:
Inline fragments = conditional fields by type [OK]
Hint: Inline fragments pick fields by type inside mixed lists [OK]
Common Mistakes:
Thinking inline fragments create new types
Confusing inline fragments with mutations
Using inline fragments for pagination
2. Which of the following is the correct syntax for an inline fragment in GraphQL?
easy
A. ... on { TypeName field1 field2 }
B. ... TypeName { field1 field2 }
C. ... TypeName on { field1 field2 }
D. ... on TypeName { field1 field2 }
Solution
Step 1: Recall inline fragment syntax
The correct syntax uses three dots, then on, then the type name, followed by fields in braces.
Step 2: Match options to syntax
... on TypeName { field1 field2 } matches this exactly: ... on TypeName { field1 field2 }.
Final Answer:
... on TypeName { field1 field2 } -> Option D
Quick Check:
Inline fragment syntax = '... on TypeName { fields }' [OK]
Hint: Remember: three dots + 'on' + type name + braces [OK]
Common Mistakes:
Omitting the 'on' keyword
Placing type name inside braces incorrectly
Using wrong order of keywords
3. Given this GraphQL query snippet:
{
searchItems {
id
... on Book {
author
}
... on Movie {
director
}
}
}
What fields will be returned for an item of type Movie?
medium
A. id and director
B. id and author
C. only director
D. only id
Solution
Step 1: Identify fields outside and inside fragments
The field id is always returned for all items. For Movie type, the inline fragment selects director.
Step 2: Combine fields for Movie type
So, the result for a Movie item includes id and director.
Final Answer:
id and director -> Option A
Quick Check:
Movie fields = id + director [OK]
Hint: Fields outside fragments always return; inside depends on type [OK]
Common Mistakes:
Assuming author field returns for Movie
Ignoring fields outside fragments
Thinking only fragment fields return
4. Consider this GraphQL query:
{
items {
... on Book {
title
author
}
... on Movie {
title
director
}
}
}
What is the error in this query?
medium
A. Cannot query both Book and Movie in the same query
B. Missing closing brace for the root field
C. Fields inside fragments must be unique across fragments
D. Inline fragments cannot be used without a type condition
Solution
Step 1: Check query braces
The query opens braces for items and two inline fragments but does not close the items field or the root query braces.
Step 2: Identify missing closing braces
Proper GraphQL syntax requires matching closing braces for all opened braces.
Final Answer:
Missing closing brace for the root field -> Option B
Quick Check:
All braces must close properly [OK]
Hint: Count opening and closing braces carefully [OK]
Common Mistakes:
Forgetting to close braces
Thinking inline fragments need unique fields
Believing you cannot query multiple types
5. You have a GraphQL schema with a union type SearchResult = Book | Movie | Author. You want to query a list of searchResults and get the title for Book, director for Movie, and name for Author. Which query correctly uses inline fragments to achieve this?
hard
A. { searchResults { ... { title director name } } }
B. { searchResults { title director name } }
C. { searchResults { ... on Book { title } ... on Movie { director } ... on Author { name } } }
D. { searchResults { ... on SearchResult { title director name } } }
Solution
Step 1: Understand union type querying
For a union, you must use inline fragments with ... on TypeName to get fields specific to each type.
Step 2: Evaluate each option
{ searchResults { ... on Book { title } ... on Movie { director } ... on Author { name } } } correctly uses inline fragments for each type. { searchResults { title director name } } tries to get all fields directly, which fails. { searchResults { ... { title director name } } } has invalid syntax. { searchResults { ... on SearchResult { title director name } } } incorrectly uses the union name as a type condition.
Final Answer:
{ searchResults { ... on Book { title } ... on Movie { director } ... on Author { name } } } -> Option C
Quick Check:
Use inline fragments per type in unions [OK]
Hint: Use '... on TypeName' for each union member [OK]
Common Mistakes:
Querying all fields without fragments on unions
Using union name as type condition
Incorrect fragment syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.