늘어나는 API를 하나의 파일에만 기재할 순 없다. 이를 별도의 구현 파일로 분할해 구현할 필요가 있다.
보통은 리소스별로 구분해 정리한다.
app
객체는 오직 어플리케이션의 진입점이 되는 main.py
에만 생성한다.
라우트 파일에는 대신 APIRouter
라는 객체를 사용해 해당 파일이 라우팅의 대상이 될 수 있도록 한다. 이때 다음처럼 라우트 객체 생성에 인자를 줘서 경로를 설정한다.
💡 라우터 파일들은
routes
라는 이름의 디렉토리에 보관한다.
router = APIRouter(prefix="/item", tags=["item"])
prefix
는 URL에 중복해서 들어갈 리소스를 적고, tags
는 추후 자동 문서화때 정리하기 편하기 위해 이름을 임의로 붙여준다. 그냥 이것도 리소스명적으면 될듯.
그리고 이제 데코레이터를 app
대신 router
로 호출한다.
@router.get("/{item_id}")
...method
그리고 여기서 끝이 아니다. app
객체에 라우터 객체를 등록해줘야 한다.
이때 라우터 객체를 임포트 해서 사용하면 된다.
from routes import item #라우트 객체가 있는 py파일 (모듈)
app = FastAPI()
app.include_router(item.router)