에듀테크 프로젝트 대시보드
경로 매개변수 (Path Parameters)
URL 경로의 일부를 함수 인자로 받습니다. 타입을 선언하면 자동 변환·검증됩니다.
@app.get("/items/{item_id}")
def read_item(item_id: int): # "/items/3" -> item_id == 3 (int)
return {"item_id": item_id}
# "/items/abc" -> 422 Unprocessable Entity (자동 검증 에러)@app.get("/users/me") # 먼저 선언 -> 고정 경로 우선
def read_me():
return {"user": "current"}
@app.get("/users/{user_id}") # 나중 선언
def read_user(user_id: int):
return {"user_id": user_id}/users/me 요청이 {user_id} 로 잡혀 me 를 int 변환하려다 422from enum import Enum
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = "resnet"
@app.get("/models/{name}")
def get_model(name: ModelName):
return {"model": name.value}
# 허용값이 OpenAPI 스키마·/docs 드롭다운에 반영됨@app.get("/files/{file_path:path}")
def read_file(file_path: str):
# "/files/home/ubuntu/a.txt" -> file_path == "home/ubuntu/a.txt"
return {"path": file_path}from typing import Annotated
from fastapi import Path
@app.get("/items/{item_id}")
def read_item(
item_id: Annotated[int, Path(title="아이템 ID", ge=1, le=1000)],
):
return {"item_id": item_id}