늘어나는 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)