[python] FastAPI에서 미들웨어 예시 구현하기

FastAPI는 강력한 웹 프레임워크로서 빠른 속도와 쉬운 사용성을 갖고 있습니다. 미들웨어는 FastAPI에서 매우 유용한 기능 중 하나로, 요청과 응답을 가로채고 수정할 수 있도록 해줍니다. 이번 글에서는 FastAPI에서 미들웨어를 구현하는 방법에 대해 알아보겠습니다.

미들웨어 클래스 생성하기

FastAPI에서 미들웨어를 구현하려면 Starlette 라이브러리의 RequestMiddleware 클래스를 상속받은 클래스를 생성해야 합니다. 아래는 미들웨어 클래스의 예시입니다.

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

class CustomMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
        # 미들웨어 실행 전 코드

        response = await call_next(request)

        # 미들웨어 실행 후 코드

        return response

위의 예시에서 CustomMiddleware 클래스는 모든 요청과 응답을 처리할 수 있는 미들웨어입니다. dispatch 메소드에서 요청 전후에 실행될 코드를 작성할 수 있습니다.

FastAPI에 미들웨어 적용하기

미들웨어를 FastAPI에 적용하려면, add_middleware 메소드를 사용하여 애플리케이션에 미들웨어 클래스를 추가해야 합니다. 아래는 FastAPI 애플리케이션에 미들웨어를 적용하는 예시입니다.

from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"])
app.add_middleware(CustomMiddleware)

위의 예시에서 app.add_middleware 메소드를 사용하여 CORSMiddlewareCustomMiddleware를 FastAPI 애플리케이션에 추가하였습니다. CORSMiddleware는 CORS 관련 처리를 위한 미들웨어로서, allow_origins, allow_methods, allow_headers 등의 옵션으로 구성할 수 있습니다.

요약

FastAPI에서 미들웨어를 사용하면 요청과 응답을 가로채고 수정할 수 있어 매우 유용합니다. 이번 글에서는 FastAPI에서 미들웨어를 구현하고 적용하는 간단한 예시를 살펴보았습니다. FastAPI의 강력한 기능을 활용하여 웹 애플리케이션을 더욱 효과적으로 개발할 수 있습니다.


참고 자료: