SeouliteLab

FastAPI와 Starlette: 빠르고 강력한 웹 프레임워크 비교 본문

프로그래밍

FastAPI와 Starlette: 빠르고 강력한 웹 프레임워크 비교

Seoulite Lab 2024. 4. 1. 13:22

FastAPI와 Starlette는 모두 Python으로 작성된 웹 프레임워크로, 빠른 속도와 강력한 기능을 제공합니다. 이번 글에서는 두 프레임워크의 기본적인 사용법과 차이점을 살펴보면서 각각의 장단점을 알아보겠습니다.

예제 1: 간단한 API 엔드포인트 생성하기 (FastAPI)

from fastapi import FastAPI

app = FastAPI()

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

위 예제에서는 FastAPI를 사용하여 간단한 API 엔드포인트를 생성합니다. "/" 경로에 GET 요청이 오면 "Hello, World!" 메시지를 반환합니다.

예제 2: 경로 변수와 쿼리 매개변수 활용하기 (FastAPI)

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

이 예제에서는 경로 변수와 쿼리 매개변수를 활용하여 동적인 API 엔드포인트를 생성합니다. /items/{item_id} 경로에 대한 GET 요청을 처리하고, 선택적으로 쿼리 매개변수 q를 받아옵니다.

예제 3: 미들웨어 사용하기 (Starlette)

from starlette.applications import Starlette
from starlette.middleware.base import BaseHTTPMiddleware

app = Starlette()

class CustomMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request, call_next):
        response = await call_next(request)
        response.headers["X-Custom-Header"] = "Custom Value"
        return response

app.add_middleware(CustomMiddleware)

@app.route("/")
async def homepage(request):
    return PlainTextResponse("Hello, World!")

이 예제에서는 Starlette를 사용하여 미들웨어를 등록하고, 요청과 응답에 대한 커스텀 처리를 수행합니다. "/" 경로에 대한 요청에 대해 "Hello, World!" 메시지를 반환하면서 응답 헤더에 사용자 정의 헤더를 추가합니다.