Query parameters let users send extra information in the URL to customize what the server returns.
Basic query parameter declaration in FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/items/") async def read_items(q: str = None): return {"query": q}
Query parameters are declared as function parameters with default values.
If you give a default value, the parameter is optional.
q is a required query parameter. The user must provide it in the URL.from fastapi import FastAPI app = FastAPI() @app.get("/search/") async def search(q: str): return {"query": q}
q is optional. If the user does not provide it, q will be None.from fastapi import FastAPI app = FastAPI() @app.get("/search/") async def search(q: str = None): return {"query": q}
q has a default value of "default" if not provided by the user.from fastapi import FastAPI app = FastAPI() @app.get("/items/") async def read_items(q: str = "default"): return {"query": q}
This program creates a simple API endpoint /items/ that accepts an optional query parameter q. If the user provides q, it returns a message showing what was searched. Otherwise, it says no query was provided.
from fastapi import FastAPI app = FastAPI() @app.get("/items/") async def read_items(q: str = None): if q: return {"message": f"You searched for: {q}"} else: return {"message": "No search query provided."}
Query parameters appear after a question mark in the URL, like /items/?q=book.
FastAPI automatically converts query parameters to the declared type, like int or str.
Use None as a default to make parameters optional.
Query parameters let users send extra info in the URL to customize responses.
Declare them as function parameters with default values in FastAPI.
Parameters with defaults are optional; without defaults are required.
Practice
Solution
Step 1: Understand query parameter declaration
In FastAPI, query parameters are declared as function parameters in path operation functions.Step 2: Recognize optional parameters
If a parameter has a default value (like None), it becomes optional and is treated as a query parameter.Final Answer:
By adding a function parameter with a default value, e.g.,def read_item(q: str = None)-> Option DQuick Check:
Optional query param = default value [OK]
- Thinking a decorator is needed for query params
- Confusing query params with request body
- Not setting a default value makes param required
item_id of type int in FastAPI?Solution
Step 1: Identify required query parameter syntax
A required query parameter has no default value and must have a type annotation.Step 2: Check each option
def read_item(item_id: int):declaresitem_idas anintwithout a default, making it required.Final Answer:
def read_item(item_id: int):-> Option AQuick Check:
Required param = no default value [OK]
- Setting default None makes param optional
- Using wrong type annotation
- Omitting type annotation makes param a path param
from fastapi import FastAPI
app = FastAPI()
@app.get('/items/')
def read_items(q: str = 'default'):
return {'q': q}Solution
Step 1: Analyze the function parameter
The parameterqhas a default value of 'default', so it is optional.Step 2: Understand the call without query params
When no query parameter is provided, FastAPI uses the default value 'default'.Final Answer:
{'q': 'default'} -> Option CQuick Check:
Default value used when query param missing [OK]
- Expecting None instead of default
- Thinking missing param causes error
- Assuming empty string is default
from fastapi import FastAPI
app = FastAPI()
@app.get('/users/')
def get_user(user_id: int = None):
return {'user_id': user_id}Solution
Step 1: Check parameter declaration
Declaringuser_id: int = Nonemakes it optional with default None.Step 2: Verify FastAPI behavior
FastAPI accepts this and treatsuser_idas an optional query parameter.Final Answer:
No error, this is a valid optional query parameter -> Option BQuick Check:
Default None with int type is allowed [OK]
- Assuming Optional[int] is required
- Thinking Query() is mandatory
- Confusing type hints with runtime errors
q which is optional with default None, and limit which is required and an integer. Which is the correct function signature?Solution
Step 1: Understand parameter order rules
In Python, parameters without defaults must come before those with defaults.Step 2: Apply to FastAPI query params
limitis required (no default), so it must come before optionalqwith default None.Final Answer:
def read_items(limit: int, q: str = None):-> Option AQuick Check:
Required params before optional ones [OK]
- Placing optional param before required causes syntax error
- Assigning default to required param
- Mixing parameter order incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
