0
0
FastAPIframework~20 mins

Default values in FastAPI - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
FastAPI Default Values Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output when calling the endpoint without query parameters?
Consider this FastAPI endpoint using default values for query parameters. What will the response be if you call /items/42 without any query parameters?
FastAPI
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str = "No description provided"

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = "default_query"):
    return {"item_id": item_id, "q": q}
A{"item_id": 42, "q": null}
B{"item_id": 42, "q": "default_query"}
C{"item_id": 42}
DError: Missing required query parameter 'q'
Attempts:
2 left
💡 Hint
Think about what happens when a query parameter has a default value and is not provided by the client.
📝 Syntax
intermediate
2:00remaining
Which option correctly sets a default value for a path parameter in FastAPI?
FastAPI path parameters cannot have default values. Which of the following code snippets correctly defines a path parameter and a query parameter with a default value?
FastAPI
from fastapi import FastAPI

app = FastAPI()

# Choose the correct snippet:
A
@app.get("/users/{user_id=1}")
async def get_user(user_id: int):
    return {"user_id": user_id}
B
@app.get("/users")
async def get_user(user_id: int = 1):
    return {"user_id": user_id}
C
@app.get("/users/{user_id}")
async def get_user(user_id: int, active: bool = True):
    return {"user_id": user_id, "active": active}
D
@app.get("/users/{user_id}")
async def get_user(user_id: int = 1):
    return {"user_id": user_id}
Attempts:
2 left
💡 Hint
Path parameters must always be provided in the URL path. Query parameters can have defaults.
state_output
advanced
2:00remaining
What is the response when a request omits an optional query parameter with a default value?
Given this FastAPI endpoint, what will be the JSON response if the client calls /search without any query parameters?
FastAPI
from fastapi import FastAPI

app = FastAPI()

@app.get("/search")
async def search_items(term: str = "all", limit: int = 10):
    return {"term": term, "limit": limit}
A{"term": "all", "limit": 10}
B{"term": null, "limit": null}
C{"term": "", "limit": 0}
D422 Unprocessable Entity error
Attempts:
2 left
💡 Hint
Check what happens when query parameters have default values and are not provided.
🔧 Debug
advanced
2:00remaining
Why does this FastAPI endpoint raise a validation error?
Examine this FastAPI endpoint. Why does calling /products without query parameters cause a 422 error?
FastAPI
from fastapi import FastAPI

app = FastAPI()

@app.get("/products")
async def list_products(category: str):
    return {"category": category}
ABecause 'category' is a required query parameter without a default value
BBecause path parameters cannot have default values
CBecause the endpoint URL is missing a path parameter
DBecause the function is missing an async keyword
Attempts:
2 left
💡 Hint
Think about which parameters FastAPI expects from the client and which have defaults.
🧠 Conceptual
expert
3:00remaining
How does FastAPI handle default values for mutable types in query parameters?
Consider this FastAPI endpoint with a query parameter defaulting to an empty list. What is the correct way to define a default empty list for a query parameter to avoid unexpected behavior?
FastAPI
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/tags")
async def get_tags(tags: list[str] = []):
    return {"tags": tags}
AUse Optional type hint: tags: Optional[list[str]] = []
BSet default to None and check inside function: tags: list[str] = None
CKeep the default as an empty list directly: tags: list[str] = []
DUse Query with default_factory: tags: list[str] = Query(default_factory=list)
Attempts:
2 left
💡 Hint
Mutable default arguments can cause shared state issues in Python functions.