fastapi는 웹 서버를 실행 할 때 uvicorn main:app를 입력하여 중심파일하나를 실행 시킨다.
만약 url 경로가 많아지면 main.py 파일에는 코드가 복잡해지기 때문에 주소별 로직을 모듈화 해야 할 필요성이 생긴다.
flask의 blueprint 처럼 fastapi에서도 APIRouter를 이용해 main 파일이 아닌 주소별 처리 로직을 분리 할 수 있다.
간단하게 main app 과 routers 라는 파일로 분리 할 것이고 routers에는 페이지 요청 작동을 확인하기 위한 get 요청 코드만 작성하였다.
파일 트리
📁 folder
└ main.py
└ routers.py
/, /first, /second 라는 엔드포인트에 GET 요청을 통해 간단한 호출 값만 나타내는 코드만 작성하였다.
APIRouter 클래스를 import하는 것을 제외하면 http 메서드와 경로 지정은 기존 문법과 차이가 없다.
# routers.py
from fastapi import APIRouter
router = APIRouter()
@router.get("/")
def get_main_page():
return {"This is main page"}
@router.get("/first/")
def get_first_page():
return {"This is first page"}
@router.get("/second")
def get_second_page():
return {"This is second page"}
main.py에는 router를 불러오고 app.include_router()를 사용하면 routing 설정이 끝난다.
from fastapi import FastAPI
from routers import router
app =FastAPI()
app.include_router(router)


경로 매게변수 값 전달
#routers.py
@router.get("/page/{number}")
def get_selected_page(number:int):
return {f"This is {number} page"}
