CoWithMe

FastAPI vs Flask: APIRouter와 블루프린트 비교

이영훈닷컴 2024. 7. 1. 11:18
728x90

오늘의 학습 내용

 

APIRouter 다양한 사용법과 미들웨어 설정

  1. APIRouter 사용법
    1. FastAPI의 APIRouter는 여러 라우트들을 모아서 하나의 라우터 객체로 관리할 수 있게 해준다.
    2. 라우터를 통해 모듈화된 구조를 유지하고, 코드의 재사용성을 높일 수 있다.
    3. @router.get("/path") 와 같이 각 경로에 대해 라우트 설정을 할 수 있다.
  2. 미들웨어 설정
    1. 미들웨어는 요청과 응답을 가로채어 처리할 수 있는 기능이다.
    2. FastAPI에서 미들웨어는 add_middleware 메소드를 사용하여 추가할 수 있다.
    3. 예시: app.add_middleware(SomeMiddleware, arg1=val1, arg2=val2)
    4. 미들웨어를 사용하여 인증, 로깅, 성능 모니터링 등을 처리할 수 있다.

APIRouter와 의존성 함수

  1. 의존성 함수 설정
    1. APIRouter에 의존성 함수를 적용하여 공통된 의존성을 모든 라우트에서 사용하게 할 수 있다.
    2. @router.get("/path", dependencies=[Depends(some_dependency)]) 와 같이 설정한다.
  2. 의존성의 재사용
    1. 의존성 함수를 재사용하여 코드 중복을 줄일 수 있다.
    2. 예시: 데이터베이스 세션 연결을 의존성 함수로 분리하여 여러 라우트에서 동일한 DB 세션을 사용할 수 있다.

APIRouter와 라우트 설정의 상속

  1. 라우트 설정 상속
    1. APIRouter는 다른 APIRouter로부터 라우트를 상속받을 수 있다.
    2. 이 기능을 통해 공통된 라우트 설정을 부모 라우터에 정의하고, 자식 라우터에서 이를 재사용할 수 있다. 2. 상속 구조 예시
    3. 부모 라우터: api_router = APIRouter()
    4. 자식 라우터: sub_router = APIRouter()
    5. 자식 라우터에 부모 라우터의 라우트를 포함: sub_router.include_router(api_router)

학습한 내용에서의 발견

  • 미들웨어의 유용성 미들웨어를 통해 애플리케이션 전반에 걸쳐 공통적인 처리를 쉽게 적용할 수 있다는 점이 인상적이었다. 이를 활용하면 코드의 중복을 줄이고, 유지보수를 용이하게 할 수 있다.

어려웠던 점

  • 미들웨어의 동작 방식 이해 미들웨어가 요청과 응답 사이에서 어떤 순서로 동작하는지, 그리고 여러 개의 미들웨어가 있을 때 그 순서가 어떻게 결정되는지 이해하는 것이 처음에는 어려웠다.

해결 방법

  • 공식 문서와 예제를 통한 학습 FastAPI 공식 문서와 다양한 예제 코드를 참고하여 미들웨어의 동작 방식을 학습하였다. 또한, 작은 예제 프로젝트를 만들어 직접 미들웨어를 추가하고 테스트해보는 과정을 통해 이해를 높였다.

FastAPI 와 플라스크 공부하면서 나름 비교 분석

 

FastAPI와 Flask는 웹 애플리케이션 개발을 위한 파이썬 프레임워크입니다. 두 프레임워크 모두 코드를 구조화하고 관리하기 쉽게 만들어주는 도구를 제공합니다. FastAPI에서는 'APIRouter'를, Flask에서는 '블루프린트'를 사용합니다.

이 두 도구는 라우팅을 모듈화하는 데 사용되지만, 몇 가지 차이점이 있습니다:

 

  1. 사용 방법:
    1. FastAPI: APIRouter 객체를 생성하고 include_router() 메서드로 앱에 추가합니다.
    2. Flask: Blueprint 객체를 생성하고 register_blueprint() 메서드로 앱에 등록합니다.
  2. 기능:
    1. FastAPI의 APIRouter는 의존성 주입(dependency injection)과 미들웨어를 라우터 수준에서 지원합니다.
    2. Flask의 블루프린트는 이러한 기능을 직접적으로 지원하지 않습니다.
  3. 타입 힌팅과 문서화:
    1. FastAPI는 자동 문서화와 타입 검사를 제공하여 API 개발을 더 쉽게 만듭니다.
    2. Flask는 이러한 기능을 기본적으로 제공하지 않지만, 확장을 통해 구현할 수 있습니다.

두 도구 모두 효과적인 웹 개발을 가능하게 합니다. 선택은 프로젝트 요구사항, 팀의 경험, 그리고 개인적인 선호도에 따라 달라질 수 있습니다.  FastAPI는 최신 기능과 자동화를 제공하는 반면, Flask는 더 가볍고 유연한 접근 방식을 제공합니다.

비도오고 머리좀 식힐겸 트러플 파스트 만들어 봄

728x90