📖 Scenario: You are creating a simple GraphQL API for a bookstore. You want to define the structure of the data for books so that clients can query book details easily.
🎯 Goal: Build a GraphQL Book object type with specific fields to represent books in the bookstore.
📋 What You'll Learn
Create a GraphQL object type named Book
Add fields id, title, author, and publishedYear with correct types
Use ID! type for id to uniquely identify each book
Use String! type for title and author
Use Int type for publishedYear which can be null if unknown
💡 Why This Matters
🌍 Real World
GraphQL object types define the shape of data clients can request from APIs, making data fetching clear and efficient.
💼 Career
Understanding GraphQL schemas is essential for backend developers and API designers working with modern web applications.
Progress0 / 4 steps
1
Define the Book object type
Create a GraphQL object type called Book with no fields yet.
GraphQL
Hint
Start by writing type Book { } to define the object type.
2
Add the id field
Inside the Book type, add a field called id with type ID!.
GraphQL
Hint
The id field should be non-nullable and use the ID! type.
3
Add title and author fields
Add two more fields inside Book: title and author, both with type String!.
GraphQL
Hint
Both title and author are required strings, so use String!.
4
Add optional publishedYear field
Add a field called publishedYear with type Int (nullable) inside the Book type.
GraphQL
Hint
The publishedYear can be missing, so do not add an exclamation mark.
Practice
(1/5)
1. What is the main purpose of an Object type in GraphQL?
easy
A. To execute database queries directly
B. To create user interface components
C. To store data permanently
D. To define the shape and fields of data objects
Solution
Step 1: Understand the role of Object types in GraphQL
Object types describe what fields an object has and their types, shaping the data structure.
Step 2: Differentiate from other concepts
Object types do not execute queries, store data, or create UI components; they only define data shapes.
Final Answer:
To define the shape and fields of data objects -> Option D
Quick Check:
Object type = data shape definition [OK]
Hint: Object types describe data fields and their types [OK]
Common Mistakes:
Confusing object types with query execution
Thinking object types store data
Mixing object types with UI components
2. Which of the following is the correct syntax to define a GraphQL object type named Book with a title field of type String?
easy
A. object Book { title: String }
B. type Book { title: String }
C. Book type { title: String }
D. define Book { title: String }
Solution
Step 1: Recall GraphQL object type syntax
GraphQL uses the keyword type followed by the name and fields in braces.
Step 2: Check each option
Only type Book { title: String } uses the correct syntax: type Book { title: String }. Others use invalid keywords.
Final Answer:
type Book { title: String } -> Option B
Quick Check:
Keyword 'type' + name + fields = correct syntax [OK]
Hint: Use 'type' keyword to define object types [OK]
Common Mistakes:
Using 'object' or 'define' instead of 'type'
Placing type name after 'type' incorrectly
Missing braces around fields
3. Given the GraphQL object type definition:
type User {
id: ID
name: String
age: Int
}
What is the expected result of querying:
{ user { id name } }
?
medium
A. Returns user object with only id and name fields
B. Returns user object with id, name, and age fields
C. Returns an error because age is missing
D. Returns null because query is incomplete
Solution
Step 1: Understand GraphQL query field selection
GraphQL returns only the fields requested in the query, here id and name.
Step 2: Check if missing fields cause errors
Missing age in query does not cause error; it is simply not returned.
Final Answer:
Returns user object with only id and name fields -> Option A
Quick Check:
Query fields = returned fields only [OK]
Hint: GraphQL returns only requested fields in query [OK]
Common Mistakes:
Expecting all fields to be returned by default
Thinking missing fields cause errors
Assuming incomplete queries return null
4. Identify the error in this GraphQL object type definition:
type Product {
id: ID!
name: String
price: Float
price: Int
}
medium
A. ID type cannot have exclamation mark
B. Missing exclamation mark on 'name' field
C. Duplicate field name 'price' with different types
D. Object type must have at least one field
Solution
Step 1: Review field names and types
The field price is declared twice with different types (Float and Int), which is invalid.
Step 2: Check other options
Exclamation mark on ID! is valid for non-null. Fields can be optional. Object type can have multiple fields.
Final Answer:
Duplicate field name 'price' with different types -> Option C
Quick Check:
Field names must be unique in object type [OK]
Hint: Field names must be unique in object types [OK]
Common Mistakes:
Allowing duplicate field names
Misunderstanding non-null syntax
Thinking object types need all fields non-null
5. You want to define a GraphQL object type Author that includes a list of Book objects. Which is the correct way to define the books field?
hard
A. books: [Book]
B. books: Book[]
C. books: List<Book>
D. books: {Book}
Solution
Step 1: Recall GraphQL list syntax
GraphQL uses square brackets around a type to indicate a list, e.g., [Book].
Step 2: Evaluate each option
books: [Book] uses correct GraphQL syntax. Options A, B, and C use syntax from other languages or invalid formats.
Final Answer:
books: [Book] -> Option A
Quick Check:
Lists use square brackets in GraphQL [OK]
Hint: Use square brackets for lists in GraphQL types [OK]
Common Mistakes:
Using array syntax from other languages
Using curly braces instead of brackets
Confusing list syntax with generics
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.