Question
Answer and Explanation
To create a FastAPI 2 router with the same prefix, you can use the APIRouter
class provided by FastAPI and define a common prefix that applies to all routes within that router. Here's a step-by-step guide and example:
1. Create an APIRouter Instance:
First, import the APIRouter
class from FastAPI and create an instance. You'll specify the prefix when you create the router.
2. Define Routes within the Router:
Next, use the @router.get()
, @router.post()
, etc. decorators to define routes that belong to this router. These routes will automatically inherit the specified prefix.
3. Include the Router in your FastAPI Application:
Finally, include the router in your FastAPI application using the app.include_router()
method. You do not need to specify the prefix here; it's already defined in the router itself.
4. Example code:
from fastapi import FastAPI, APIRouter
router = APIRouter(prefix="/items")
@router.get("/")
async def read_items():
return {"message": "List of items"}
@router.get("/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id, "message": "Item details"}
app = FastAPI()
app.include_router(router)
5. Explanation:
- We create an APIRouter
instance with the prefix /items
.
- The read_items
endpoint becomes accessible at /items/
, and the read_item
endpoint at /items/{item_id}
.
- We include this router in the main FastAPI app, and all routes defined in this router will get the prefix of /items
automatically.
6. Benefits of Using Router:
- Organization: Routers help keep your codebase organized by grouping related endpoints.
- Reusability: You can reuse routers in different parts of your application or even in multiple applications.
- Modularity: Easier to manage and scale your API by dividing it into smaller functional modules.
By using the APIRouter
with a defined prefix, you can effectively manage and organize your FastAPI routes, making your code cleaner and easier to maintain.