[python] FastAPI에 사용자 정의 미들웨어 추가하기

FastAPI는 빠르고 현대적인 웹 프레임워크로, 사용자 정의 미들웨어를 추가하여 요청 처리를 수정하거나 로깅, 권한 부여 등의 기능을 추가할 수 있습니다. 이 포스트에서는 FastAPI 애플리케이션에 사용자 정의 미들웨어를 추가하는 방법을 살펴보겠습니다.

미들웨어란?

미들웨어는 애플리케이션의 요청과 응답을 가로채어 어떠한 동작을 추가하거나 수정할 수 있는 소프트웨어 컴포넌트입니다. FastAPI에서 미들웨어를 활용하면 요청 처리의 전/후에 추가적인 작업을 수행할 수 있습니다.

FastAPI 앱에 미들웨어 추가하기

FastAPI 애플리케이션에 사용자 정의 미들웨어를 추가하는 것은 간단합니다. 먼저, starlette.middleware.Middleware 클래스를 사용하여 사용자 정의 미들웨어를 작성합니다.

예를 들어, 다음과 같이 사용자 정의 미들웨어를 작성할 수 있습니다.

from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware, Request, Response

class CustomMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next):
        # 요청 전처리 작업
        print("Before request processing")
        
        response = await call_next(request)
        
        # 응답 후처리 작업
        print("After request processing")
        
        return response

app = FastAPI()

app.add_middleware(CustomMiddleware)

위 예시에서 CustomMiddleware 클래스는 BaseHTTPMiddleware 클래스를 상속하고, dispatch 메서드를 오버라이딩하여 요청 전후에 추가 작업을 수행합니다.

app.add_middleware를 통해 애플리케이션에 사용자 정의 미들웨어를 추가할 수 있습니다.

결론

FastAPI를 사용하면 사용자 정의 미들웨어를 통해 요청 처리에 추가 기능을 도입할 수 있습니다. 이를 통해 코드를 재사용하거나 애플리케이션의 동작을 유연하게 변경할 수 있습니다.

FastAPI 공식 문서나 스타레틀 공식 문서에서 미들웨어에 대해 더 자세히 알아볼 수 있습니다.

참고 자료