FastAPI의 APIRouter
Router/main_org.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.get("/item/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
@app.post("/item")
async def create_item(item: Item):
return item
@app.put("/item/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, "item": item}
@app.get("/users/")
async def read_users():
return [{"username": "Rickie"}, {"username": "Martin"}]
@app.get("/users/me")
async def read_user_me():
return {"username": "currentuser"}
@app.get("/users/{username}")
async def read_user(username: str):
return {"username": username}
Router/main.py
from fastapi import FastAPI
from routes import item, user
app = FastAPI()
app.include_router(item.router)
app.include_router(user.router)
Router/routes/item.py
from fastapi import APIRouter
from pydantic import BaseModel
router = APIRouter(prefix="/item", tags=["item"])
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@router.get("/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
@router.post("/")
async def create_item(item: Item):
return item
@router.put("/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, "item": item}
• APIRouter: FastAPI에서 라우트(경로)를 모듈별로 분리해서 관리할 수 있게 해주는 기능
• prefix=”/item”: 이 라우터에 등록된 모든 경로는 /item으로 시작.
예: /item/123, /item/ • tags=[“item”]: Swagger 문서에서 이 API들을 “item” 그룹으로 묶어서 보여줌. (자동 문서화할 때 보기 좋게 분류됨)
Router/routes/user.py
from fastapi import APIRouter
router = APIRouter(prefix="/user", tags=["user"])
@router.get("/")
async def read_users():
return [{"username": "Rickie"}, {"username": "Martin"}]
@router.get("/me")
async def read_user_me():
return {"username": "currentuser"}
@router.get("/{username}", tags=["users"])
async def read_user(username: str):
return {"username": username}