728x90
오늘의 학습 내용
APIRouter 다양한 사용법과 미들웨어 설정
- APIRouter 사용법
- FastAPI의 APIRouter는 여러 라우트들을 모아서 하나의 라우터 객체로 관리할 수 있게 해준다.
- 라우터를 통해 모듈화된 구조를 유지하고, 코드의 재사용성을 높일 수 있다.
- @router.get("/path") 와 같이 각 경로에 대해 라우트 설정을 할 수 있다.
- 미들웨어 설정
- 미들웨어는 요청과 응답을 가로채어 처리할 수 있는 기능이다.
- FastAPI에서 미들웨어는 add_middleware 메소드를 사용하여 추가할 수 있다.
- 예시: app.add_middleware(SomeMiddleware, arg1=val1, arg2=val2)
- 미들웨어를 사용하여 인증, 로깅, 성능 모니터링 등을 처리할 수 있다.
APIRouter와 의존성 함수
- 의존성 함수 설정
- APIRouter에 의존성 함수를 적용하여 공통된 의존성을 모든 라우트에서 사용하게 할 수 있다.
- @router.get("/path", dependencies=[Depends(some_dependency)]) 와 같이 설정한다.
- 의존성의 재사용
- 의존성 함수를 재사용하여 코드 중복을 줄일 수 있다.
- 예시: 데이터베이스 세션 연결을 의존성 함수로 분리하여 여러 라우트에서 동일한 DB 세션을 사용할 수 있다.
APIRouter와 라우트 설정의 상속
- 라우트 설정 상속
- APIRouter는 다른 APIRouter로부터 라우트를 상속받을 수 있다.
- 이 기능을 통해 공통된 라우트 설정을 부모 라우터에 정의하고, 자식 라우터에서 이를 재사용할 수 있다. 2. 상속 구조 예시
- 부모 라우터: api_router = APIRouter()
- 자식 라우터: sub_router = APIRouter()
- 자식 라우터에 부모 라우터의 라우트를 포함: sub_router.include_router(api_router)
학습한 내용에서의 발견
- 미들웨어의 유용성 미들웨어를 통해 애플리케이션 전반에 걸쳐 공통적인 처리를 쉽게 적용할 수 있다는 점이 인상적이었다. 이를 활용하면 코드의 중복을 줄이고, 유지보수를 용이하게 할 수 있다.
어려웠던 점
- 미들웨어의 동작 방식 이해 미들웨어가 요청과 응답 사이에서 어떤 순서로 동작하는지, 그리고 여러 개의 미들웨어가 있을 때 그 순서가 어떻게 결정되는지 이해하는 것이 처음에는 어려웠다.
해결 방법
- 공식 문서와 예제를 통한 학습 FastAPI 공식 문서와 다양한 예제 코드를 참고하여 미들웨어의 동작 방식을 학습하였다. 또한, 작은 예제 프로젝트를 만들어 직접 미들웨어를 추가하고 테스트해보는 과정을 통해 이해를 높였다.
FastAPI 와 플라스크 공부하면서 나름 비교 분석
FastAPI와 Flask는 웹 애플리케이션 개발을 위한 파이썬 프레임워크입니다. 두 프레임워크 모두 코드를 구조화하고 관리하기 쉽게 만들어주는 도구를 제공합니다. FastAPI에서는 'APIRouter'를, Flask에서는 '블루프린트'를 사용합니다.
이 두 도구는 라우팅을 모듈화하는 데 사용되지만, 몇 가지 차이점이 있습니다:
- 사용 방법:
- FastAPI: APIRouter 객체를 생성하고 include_router() 메서드로 앱에 추가합니다.
- Flask: Blueprint 객체를 생성하고 register_blueprint() 메서드로 앱에 등록합니다.
- 기능:
- FastAPI의 APIRouter는 의존성 주입(dependency injection)과 미들웨어를 라우터 수준에서 지원합니다.
- Flask의 블루프린트는 이러한 기능을 직접적으로 지원하지 않습니다.
- 타입 힌팅과 문서화:
- FastAPI는 자동 문서화와 타입 검사를 제공하여 API 개발을 더 쉽게 만듭니다.
- Flask는 이러한 기능을 기본적으로 제공하지 않지만, 확장을 통해 구현할 수 있습니다.
두 도구 모두 효과적인 웹 개발을 가능하게 합니다. 선택은 프로젝트 요구사항, 팀의 경험, 그리고 개인적인 선호도에 따라 달라질 수 있습니다. FastAPI는 최신 기능과 자동화를 제공하는 반면, Flask는 더 가볍고 유연한 접근 방식을 제공합니다.
728x90
'CoWithMe' 카테고리의 다른 글
타입 힌팅 : 플라스크 와 fastAPI 비교 그리고 비전공자와 전공자 비교 (129) | 2024.07.03 |
---|---|
라우팅 플라스크와 FastAPI 비교 그리고 학습 프레임과 실행 프레임의 차이 (109) | 2024.07.02 |
FastAPI Pydantic을 활용한 요청 데이터 검증 및 응답 모델 정의 학습 요약 (130) | 2024.06.28 |
FastAPI 기본 개념 공부 (92) | 2024.06.27 |
무작정 따라하기 플라스크 끝 FASTAPI 시작 (10) | 2024.06.25 |