What if your API could understand true/false filters perfectly without you writing extra code?
Why Boolean query parameters in FastAPI? - Purpose & Use Cases
Imagine building a web API where users can filter results by true/false options, like showing only active users or hiding archived items.
Manually parsing query strings to detect true/false values is tricky and error-prone. You might misinterpret 'True', 'true', '1', or even miss the parameter entirely, causing bugs and confusing users.
FastAPI automatically converts query parameters to boolean values, handling different input styles and missing values gracefully, so your code stays clean and reliable.
active = request.query_params.get('active') if active == 'true': show_active = True else: show_active = False
from fastapi import Query from fastapi import FastAPI app = FastAPI() @app.get('/users') async def get_users(active: bool = Query(False)): # active is already a boolean here return {'active': active}
You can write clear, concise API endpoints that correctly understand user intentions without extra parsing code.
A shopping site lets customers filter products by availability with a simple URL like ?in_stock=true, and your API instantly knows to show only available items.
Manual parsing of boolean query parameters is error-prone and verbose.
FastAPI converts query parameters to booleans automatically and safely.
This leads to cleaner code and better user experience in APIs.
Practice
Solution
Step 1: Identify the purpose of Boolean query parameters
Boolean query parameters are flags that can be true or false, used to control how the API behaves.Step 2: Identify the correct description
Only "A true or false flag passed in the URL to control API behavior" describes a true/false flag passed via URL query parameters.Final Answer:
A true or false flag passed in the URL to control API behavior -> Option AQuick Check:
Boolean query parameter = true/false flag [OK]
- Confusing Boolean parameters with numbers or strings
- Thinking Boolean parameters come from request body
- Assuming Boolean parameters are lists
Solution
Step 1: Recall FastAPI syntax for optional Boolean query parameters
Use Optional[bool] with Query(None) to allow the parameter to be true, false, or missing.Step 2: Match the correct function signature
def read_items(active: Optional[bool] = Query(None)): correctly uses Optional[bool] and Query(None) for an optional Boolean query parameter.Final Answer:
def read_items(active: Optional[bool] = Query(None)): -> Option BQuick Check:
Optional[bool] with Query(None) = correct syntax [OK]
- Using bool without Optional for optional parameters
- Using str or int instead of bool
- Omitting Query import or default value
/items?active=true?
from fastapi import FastAPI, Query
from typing import Optional
app = FastAPI()
@app.get('/items')
async def read_items(active: Optional[bool] = Query(None)):
return {"active": active}Solution
Step 1: Understand FastAPI Boolean query parsing
FastAPI automatically converts query strings like 'true' to Python boolean True.Step 2: Check the returned dictionary
The function returns {"active": active}, so with active=true in URL, it returns {"active": true} as JSON.Final Answer:
{"active": true} -> Option DQuick Check:
Query 'true' converts to True boolean [OK]
- Expecting string 'true' instead of boolean true
- Assuming missing parameter returns false
- Thinking it causes an error
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/items')
async def read_items(active: bool = Query()):
return {"active": active}Solution
Step 1: Check Query parameter usage
Query() without a default value means the parameter is required. For optional, a default like None is needed.Step 2: Identify the missing default
Since active is bool and no default is given, FastAPI expects the query parameter always present, else error.Final Answer:
Query() requires a default value for optional parameters -> Option CQuick Check:
Query() needs default for optional params [OK]
- Omitting default value for optional query parameters
- Thinking async is not allowed
- Trying to convert Boolean to string manually
available. If available is true, return only available items; if false, only unavailable items; if missing, return all items. Which code correctly implements this behavior?Solution
Step 1: Analyze the required filtering behavior
If available is None, return all items; else filter by matching available status.Step 2: Check code correctness
from fastapi import FastAPI, Query from typing import Optional app = FastAPI() items = [{"name": "item1", "available": True}, {"name": "item2", "available": False}] @app.get('/items') async def read_items(available: Optional[bool] = Query(None)): if available is None: return items return [item for item in items if item["available"] == available] uses Optional[bool] with Query(None) and filters items correctly based on available value.Final Answer:
from fastapi import FastAPI, Query from typing import Optional app = FastAPI() items = [{"name": "item1", "available": True}, {"name": "item2", "available": False}] @app.get('/items') async def read_items(available: Optional[bool] = Query(None)): if available is None: return items return [item for item in items if item["available"] == available] -> Option AQuick Check:
Optional[bool] with filtering logic = correct [OK]
- Using bool without Optional for optional parameter
- Not filtering items based on Boolean value
- Using string type instead of Boolean
Ready to prove it?
Pass the test and this pattern moves unknown
