Bird
Raised Fist0
FastAPIframework~10 mins

Query parameter validation in FastAPI - Interactive Code Practice

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

Complete the code to declare a query parameter named 'q' as optional.

FastAPI
from fastapi import FastAPI
from typing import *

app = FastAPI()

@app.get("/items/")
async def read_items(q: [1] = None):
    return {"q": q}
Drag options to blanks, or click blank then click option'
AList[str]
BOptional[str]
Cint
Dstr
Attempts:
3 left
💡 Hint
Common Mistakes
Using just 'str' makes the parameter required.
Using 'int' when the parameter should be a string.
2fill in blank
medium

Complete the code to set a minimum length of 3 for the query parameter 'q'.

FastAPI
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(q: str = Query([1], min_length=3)):
    return {"q": q}
Drag options to blanks, or click blank then click option'
A''
BNone
C...
D""
Attempts:
3 left
💡 Hint
Common Mistakes
Using None makes the parameter optional.
Using empty strings does not enforce required parameter.
3fill in blank
hard

Fix the error in the code to correctly validate that 'q' is an integer query parameter with a maximum value of 10.

FastAPI
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(q: int = Query([1], le=10)):
    return {"q": q}
Drag options to blanks, or click blank then click option'
A0
B10
CNone
D...
Attempts:
3 left
💡 Hint
Common Mistakes
Using None makes the parameter optional.
Using a default value disables required validation.
4fill in blank
hard

Fill both blanks to declare a query parameter 'q' that is optional and has a regex pattern to allow only letters.

FastAPI
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(q: str = Query([1], regex=[2])):
    return {"q": q}
Drag options to blanks, or click blank then click option'
ANone
B"^[a-zA-Z]+$"
C"^\d+$"
D...
Attempts:
3 left
💡 Hint
Common Mistakes
Using Ellipsis makes the parameter required.
Using wrong regex pattern allows digits.
5fill in blank
hard

Fill all three blanks to declare a query parameter 'q' that is required, has a minimum length of 2, and a maximum length of 5.

FastAPI
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(q: str = Query([1], min_length=[2], max_length=[3])):
    return {"q": q}
Drag options to blanks, or click blank then click option'
ANone
B2
C5
D...
Attempts:
3 left
💡 Hint
Common Mistakes
Using None makes the parameter optional.
Swapping min_length and max_length values.

Practice

(1/5)
1. What is the main purpose of using Query() in FastAPI for query parameters?
easy
A. To validate and enforce rules on query parameter values
B. To create new API endpoints automatically
C. To handle database connections
D. To format the response data

Solution

  1. Step 1: Understand the role of Query()

    Query() is used in FastAPI to add validation rules to query parameters, such as minimum length or value ranges.
  2. Step 2: Identify what Query() does not do

    It does not create endpoints, handle databases, or format responses; it only validates input parameters.
  3. Final Answer:

    To validate and enforce rules on query parameter values -> Option A
  4. Quick Check:

    Query() validates parameters = B [OK]
Hint: Query() is for input rules, not endpoints or data handling [OK]
Common Mistakes:
  • Thinking Query() creates API routes
  • Confusing Query() with response formatting
  • Assuming Query() manages database connections
2. Which of the following is the correct syntax to require a query parameter q with a minimum length of 3 in FastAPI?
easy
A. Query(q: str, min_length=3)
B. q: Query = str(min_length=3)
C. q = Query(str, min_length=3)
D. q: str = Query(min_length=3)

Solution

  1. Step 1: Recall FastAPI query parameter syntax

    In FastAPI, you declare a query parameter with its type and assign it to Query() with validation rules, e.g., q: str = Query(min_length=3).
  2. Step 2: Check each option's syntax correctness

    q: str = Query(min_length=3) matches the correct pattern. Options B, C, and D misuse type annotations or function calls.
  3. Final Answer:

    q: str = Query(min_length=3) -> Option D
  4. Quick Check:

    Correct syntax = A [OK]
Hint: Type then = Query(...) with rules inside [OK]
Common Mistakes:
  • Swapping type and Query() order
  • Calling Query() incorrectly as a function
  • Missing type annotation before Query()
3. Given this FastAPI endpoint code, what will be the response if the query parameter age is set to 15?
from fastapi import FastAPI, Query
app = FastAPI()

@app.get("/items/")
async def read_items(age: int = Query(..., ge=18)):
    return {"age": age}
medium
A. {"age": 15}
B. 422 Unprocessable Entity error
C. 500 Internal Server Error
D. {"age": null}

Solution

  1. Step 1: Understand the validation rule

    The query parameter age requires a value greater or equal to 18 (ge=18).
  2. Step 2: Check the input value against the rule

    Input age=15 is less than 18, so FastAPI will reject it with a 422 validation error.
  3. Final Answer:

    422 Unprocessable Entity error -> Option B
  4. Quick Check:

    age < 18 triggers 422 error = C [OK]
Hint: ge=18 means age must be 18 or more [OK]
Common Mistakes:
  • Assuming invalid input returns null or default
  • Expecting server error instead of validation error
  • Ignoring validation and returning input as is
4. Identify the error in this FastAPI query parameter validation code:
from fastapi import FastAPI, Query
app = FastAPI()

@app.get("/search/")
async def search_items(q: str = Query(min_length=5)):
    return {"query": q}
medium
A. There is no error; the code correctly requires the query parameter with min_length validation
B. min_length should be max_length
C. Query() cannot be used with strings
D. Function must be synchronous, not async

Solution

  1. Step 1: Check if query parameter is required

    Query(min_length=5) implicitly sets default=Ellipsis, making q required with string length validation.
  2. Step 2: Understand FastAPI requirement for required params

    Explicit ... is not needed; the code correctly validates required query parameters. No error.
  3. Final Answer:

    There is no error; the code correctly requires the query parameter with min_length validation -> Option A
  4. Quick Check:

    Required param needs Query(...) = A [OK]
Hint: Query(min_length=5) makes param required implicitly [OK]
Common Mistakes:
  • Thinking Query(min_length=5) makes param optional
  • Confusing min_length with max_length
  • Thinking async is invalid for FastAPI endpoints
5. You want to create a FastAPI endpoint that accepts a query parameter tags which must be a list of strings, each at least 2 characters long. Which is the correct way to validate this?
hard
A. tags: list[str] = Query(..., min_length=2)
B. tags: list[str] = Query(..., min_items=1, min_length=2)
C. tags: list[str] = Query(..., min_items=1), with custom validation for string length
D. tags: str = Query(..., min_length=2)

Solution

  1. Step 1: Understand FastAPI's Query validation limits

    FastAPI's Query() supports min_items for lists but min_length applies to strings, not list elements.
  2. Step 2: Validate list and individual string lengths

    To ensure each string in the list is at least 2 characters, you must add custom validation logic beyond Query().
  3. Final Answer:

    tags: list[str] = Query(..., min_items=1), with custom validation for string length -> Option C
  4. Quick Check:

    List length via Query, element length via custom code = D [OK]
Hint: Query() validates list size; use extra code for element rules [OK]
Common Mistakes:
  • Using min_length on list instead of strings inside
  • Not validating individual string lengths
  • Declaring tags as a single string instead of list
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