Bird
Raised Fist0
GraphQLquery~10 mins

Schema-first development in GraphQL - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a GraphQL type for a User with an ID field.

GraphQL
type User { id: [1] }
Drag options to blanks, or click blank then click option'
AID!
BString
CInt
DBoolean
Attempts:
3 left
💡 Hint
Common Mistakes
Using String instead of ID for unique identifiers.
Forgetting the exclamation mark to mark the field as required.
2fill in blank
medium

Complete the code to add a required name field of type String to the User type.

GraphQL
type User { name: [1] }
Drag options to blanks, or click blank then click option'
AInt
BString!
CBoolean
DID
Attempts:
3 left
💡 Hint
Common Mistakes
Using ID instead of String for name.
Omitting the exclamation mark, making the field optional.
3fill in blank
hard

Fix the error in the schema by completing the field type for posts as a list of Post types.

GraphQL
type User { posts: [[1]] }
Drag options to blanks, or click blank then click option'
AInt
BString
CPost
DBoolean
Attempts:
3 left
💡 Hint
Common Mistakes
Using scalar types like String instead of the Post type.
Forgetting to use square brackets for lists.
4fill in blank
hard

Fill both blanks to define a Query type with a user field that takes an ID argument and returns a User.

GraphQL
type Query { user(id: [1]): [2] }
Drag options to blanks, or click blank then click option'
AID!
BUser
CString
DBoolean
Attempts:
3 left
💡 Hint
Common Mistakes
Using String instead of ID for the argument type.
Returning a scalar type instead of the User object.
5fill in blank
hard

Fill both blanks to define a Mutation type with a createUser field that takes a name argument and returns a User.

GraphQL
type Mutation { createUser(name: [1]): [2] }
Drag options to blanks, or click blank then click option'
AString!
BUser
CID!
DBoolean
Attempts:
3 left
💡 Hint
Common Mistakes
Using optional argument types without exclamation marks.
Returning scalar types instead of the User object.

Practice

(1/5)
1. What is the main purpose of schema-first development in GraphQL?
easy
A. To design the data types and API structure before writing code
B. To write all the backend code before defining the API
C. To generate random queries automatically
D. To skip planning and start coding immediately

Solution

  1. Step 1: Understand schema-first development

    Schema-first means you create the schema (data types and API) first before coding the backend logic.
  2. Step 2: Compare options with definition

    Only To design the data types and API structure before writing code matches this idea; others describe different or incorrect approaches.
  3. Final Answer:

    To design the data types and API structure before writing code -> Option A
  4. Quick Check:

    Schema-first = plan schema first [OK]
Hint: Schema-first means plan schema before coding [OK]
Common Mistakes:
  • Thinking schema is generated after coding
  • Confusing schema-first with code-first
  • Believing schema-first skips planning
2. Which of the following is the correct way to define a GraphQL type in SDL (Schema Definition Language)?
easy
A. User type { id: ID name: String }
B. type User { id: ID!, name: String! }
C. define type User { id: ID, name: String }
D. class User { id: ID; name: String; }

Solution

  1. Step 1: Recall GraphQL SDL syntax

    GraphQL SDL defines types using 'type TypeName { fields }' with field types and optional ! for required.
  2. Step 2: Check each option

    type User { id: ID!, name: String! } matches correct SDL syntax. The other options use incorrect keywords or syntax from other languages.
  3. Final Answer:

    type User { id: ID!, name: String! } -> Option B
  4. Quick Check:

    SDL type syntax = type Name { fields } [OK]
Hint: SDL uses 'type Name { fields }' syntax [OK]
Common Mistakes:
  • Using 'define' keyword instead of 'type'
  • Writing types like classes in other languages
  • Omitting exclamation marks for required fields incorrectly
3. Given this schema snippet:
type Query { user(id: ID!): User }

and this query:
{ user(id: "1") { id name } }

What will the query return if the user with id "1" exists?
medium
A. { "data": { "user": null } }
B. { "error": "User not found" }
C. { "data": { "user": { "id": "1", "name": "Alice" } } }
D. SyntaxError

Solution

  1. Step 1: Understand the schema and query

    The schema defines a Query type with a user field that takes an id and returns a User type. The query requests user with id "1" and fields id and name.
  2. Step 2: Predict the output if user exists

    If user with id "1" exists, the response will include data with user object containing id and name fields.
  3. Final Answer:

    { "data": { "user": { "id": "1", "name": "Alice" } } } -> Option C
  4. Quick Check:

    Existing user query returns data with user object [OK]
Hint: Existing user query returns data with user object [OK]
Common Mistakes:
  • Confusing null response with error
  • Expecting error instead of data when user exists
  • Misreading query syntax causing syntax error
4. Identify the error in this schema definition:
type Query { getUser(id: ID): User }

What is wrong here?
medium
A. ID is not a valid GraphQL type
B. The User type is missing curly braces
C. Query type cannot have arguments
D. The id argument should be non-nullable with an exclamation mark

Solution

  1. Step 1: Review argument type in schema

    The argument 'id' is typed as 'ID' but lacks the exclamation mark, so it is nullable.
  2. Step 2: Understand common practice for IDs

    Usually, IDs used to fetch data are required (non-nullable), so 'ID!' is preferred to ensure the argument is provided.
  3. Final Answer:

    The id argument should be non-nullable with an exclamation mark -> Option D
  4. Quick Check:

    Required args use ! in schema [OK]
Hint: Use ! for required arguments in schema [OK]
Common Mistakes:
  • Thinking Query type cannot have arguments
  • Believing User type needs braces in this line
  • Assuming ID is invalid type
5. You want to add a new mutation to update a user's email in a schema-first GraphQL API. Which schema definition correctly adds this mutation?
hard
A. type Mutation { updateUserEmail(id: ID!, email: String!): User }
B. mutation updateUserEmail(id: ID!, email: String!): User
C. type Mutation updateUserEmail(id: ID!, email: String!): User
D. type Mutation { updateUserEmail(id: ID, email: String): Boolean }

Solution

  1. Step 1: Recall mutation syntax in schema-first SDL

    Mutations are defined inside a 'type Mutation { ... }' block with fields representing mutation functions and their arguments and return types.
  2. Step 2: Analyze each option

    type Mutation { updateUserEmail(id: ID!, email: String!): User } correctly defines a mutation field with required id and email arguments and returns a User type. mutation updateUserEmail(id: ID!, email: String!): User uses incorrect syntax without 'type'. type Mutation updateUserEmail(id: ID!, email: String!): User misses braces. type Mutation { updateUserEmail(id: ID, email: String): Boolean } uses optional args and returns Boolean, which may not match update use case.
  3. Final Answer:

    type Mutation { updateUserEmail(id: ID!, email: String!): User } -> Option A
  4. Quick Check:

    Mutations inside 'type Mutation { }' with args and return type [OK]
Hint: Mutations go inside 'type Mutation { }' with args and return type [OK]
Common Mistakes:
  • Omitting 'type' keyword for Mutation
  • Forgetting braces around Mutation fields
  • Using optional args when required
  • Returning wrong type for update mutation
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard