Path parameters let you get values directly from the URL. This helps your app respond differently based on what the user asks for.
Path parameters in FastAPI
Introduction
Syntax
FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
Use curly braces {} in the path to mark a path parameter.
Define the parameter in the function with the same name and type.
Examples
FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/users/{user_id}") async def get_user(user_id: int): return {"user_id": user_id}
:path to capture a path parameter that can include slashes.FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/files/{file_path:path}") async def read_file(file_path: str): return {"file_path": file_path}
FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/orders/{order_id}") async def get_order(order_id: str): return {"order_id": order_id}
Sample Program
This app returns a message with the book ID taken from the URL path.
FastAPI
from fastapi import FastAPI app = FastAPI() @app.get("/books/{book_id}") async def read_book(book_id: int): return {"book_id": book_id, "message": f"You requested book {book_id}"}
Important Notes
Path parameters are required by default. The URL must include them.
FastAPI converts the parameter to the declared type automatically.
Use descriptive names for path parameters to keep URLs clear.
Summary
Path parameters let you get values from the URL path.
Use curly braces {} in the route to declare them.
They help make your API flexible and dynamic.
Practice
1. What is the purpose of path parameters in FastAPI?
easy
Solution
Step 1: Understand what path parameters do
Path parameters allow the API to accept dynamic values from the URL path itself, making routes flexible.Step 2: Compare with other data sources
Unlike query parameters or request bodies, path parameters are part of the URL path, not optional or in the body.Final Answer:
To capture values directly from the URL path -> Option CQuick Check:
Path parameters = URL path values [OK]
Hint: Path parameters are always inside curly braces {} in the URL [OK]
Common Mistakes:
- Confusing path parameters with query parameters
- Thinking path parameters come from request body
- Assuming path parameters are optional by default
2. Which of the following is the correct way to declare a path parameter named
item_id in FastAPI?easy
Solution
Step 1: Recall FastAPI path parameter syntax
FastAPI uses curly braces {} to declare path parameters inside route strings.Step 2: Identify the correct syntax
Only @app.get("/items/{item_id}") uses curly braces correctly: "/items/{item_id}".Final Answer:
@app.get("/items/{item_id}") -> Option DQuick Check:
Curly braces {} = path parameters [OK]
Hint: Use curly braces {} around parameter names in route paths [OK]
Common Mistakes:
- Using quotes or angle brackets instead of curly braces
- Forgetting to wrap parameter name in braces
- Using colon syntax like other frameworks
3. Given this FastAPI code snippet, what will be the output when accessing
/users/42?
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}")
async def read_user(user_id: int):
return {"user_id": user_id}medium
Solution
Step 1: Understand parameter type conversion
The path parameteruser_idis declared asint, so FastAPI converts the string "42" from the URL to integer 42.Step 2: Check the returned JSON
The function returns a dictionary with key "user_id" and value 42 as an integer, which FastAPI converts to JSON.Final Answer:
{"user_id": 42} -> Option AQuick Check:
Path param type int converts "42" to 42 [OK]
Hint: Check parameter type hints to know output data type [OK]
Common Mistakes:
- Assuming path parameters are always strings
- Expecting a 404 error without reason
- Confusing JSON string with Python dict
4. What is wrong with this FastAPI path parameter code?
from fastapi import FastAPI
app = FastAPI()
@app.get("/products/{product_id}")
async def get_product(product_id):
return {"product": product_id}medium
Solution
Step 1: Check function parameter declaration
The parameterproduct_idlacks a type hint, so FastAPI treats it as a string by default but it's best practice to specify type.Step 2: Identify the issue
While the code runs, missing type annotation can cause unexpected behavior or lack of validation.Final Answer:
Missing type annotation for product_id -> Option BQuick Check:
Always add type hints for path parameters [OK]
Hint: Always add type hints to path parameters for validation [OK]
Common Mistakes:
- Ignoring type hints thinking they are optional
- Confusing async with sync function requirements
- Thinking route path syntax is wrong when it is correct
5. You want to create a FastAPI route that accepts two path parameters:
category (string) and item_id (integer). Which of the following is the correct way to define this route and function?hard
Solution
Step 1: Match path parameters with function parameters
The route declares two path parameters in order:categorythenitem_id. The function parameters must match this order and names.Step 2: Check type annotations and async usage
@app.get("/items/{category}/{item_id}") async def read_item(category: str, item_id: int): return {"category": category, "item_id": item_id} correctly uses type hints (strandint) and async function, which is recommended in FastAPI.Final Answer:
@app.get("/items/{category}/{item_id}") async def read_item(category: str, item_id: int): return {"category": category, "item_id": item_id} -> Option AQuick Check:
Order and types must match route parameters [OK]
Hint: Order and names of parameters must match route path [OK]
Common Mistakes:
- Swapping parameter order in function
- Omitting type hints for path parameters
- Using sync function without reason
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
