[python] FastAPI에서 미들웨어 추가하기

FastAPI는 Python으로 구축된 빠르고 현대적인 웹 프레임워크입니다. FastAPI를 사용하여 개발할 때, 미들웨어를 추가하여 애플리케이션에 다양한 기능을 추가할 수 있습니다.

미들웨어는 FastAPI 애플리케이션이 요청 및 응답을 처리하기 전후에 실행되는 함수입니다. 이를 통해 요청의 검증, 로깅, 인증 등의 작업을 처리할 수 있습니다.

미들웨어 추가하기

FastAPI에서 미들웨어를 추가하는 방법은 간단합니다. 먼저, fastapi.middleware.Middleware 클래스를 사용하여 미들웨어를 만듭니다.

from fastapi.middleware import Middleware

middleware = [
    Middleware1(),
    Middleware2(),
]

위의 코드에서는 Middleware1Middleware2라는 두 개의 미들웨어를 생성하여 middleware 변수에 리스트로 저장했습니다. 이렇게 생성한 미들웨어들은 FastAPI 애플리케이션에 추가될 것입니다.

FastAPI 애플리케이션을 생성할 때, app 객체의 middleware 매개변수에 미들웨어를 추가합니다.

from fastapi import FastAPI

app = FastAPI(middleware=middleware)

위의 코드에서는 FastAPI 클래스의 middleware 매개변수에 middleware 변수를 전달하여 미들웨어를 추가했습니다.

예제

간단한 예제로 미들웨어를 추가하는 방법을 살펴보겠습니다. 아래의 예제는 간단한 로깅 미들웨어를 추가하는 것을 보여줍니다.

from fastapi import FastAPI
from fastapi.middleware import Middleware

app = FastAPI()

class LoggingMiddleware:
    def __init__(self, app):
        self.app = app

    async def __call__(self, scope, receive, send):
        print("Request received:", scope["path"])
        await self.app(scope, receive, send)
        print("Response sent")

middleware = [
    Middleware(LoggingMiddleware)
]

app = FastAPI(middleware=middleware)

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

위의 코드에서는 LoggingMiddleware 클래스를 선언하고, __call__ 메서드를 구현하여 요청을 처리하기 전후에 로그를 출력하도록 했습니다. 이 미들웨어는 FastAPI 애플리케이션에 추가되어 모든 요청에 대한 로깅을 수행합니다.

결론

FastAPI에서 미들웨어를 추가하는 것은 매우 간단합니다. fastapi.middleware.Middleware 클래스를 사용하여 미들웨어 객체를 생성하고, 이를 FastAPI 클래스의 middleware 매개변수에 추가하면 됩니다. 이를 통해 애플리케이션에 다양한 기능을 추가할 수 있습니다.