FastAPI에서 url 주소 관리하기

코드늘보·2024년 10월 8일

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"}

profile
쉬운 코드를 지향합니다.

0개의 댓글