FastAPI에 GraphQL 적용하기

GraphQL은 데이터 쿼리와 조작 언어로, 클라이언트 애플리케이션에서 필요로 하는 데이터를 효율적으로 가져오고 조작할 수 있는 방법을 제공합니다. 이번 블로그에서는 FastAPI에 GraphQL을 적용하는 방법을 알아보겠습니다.

FastAPI와 GraphQL 설치하기

먼저, FastAPI와 GraphQL을 설치해야 합니다. 다음 명령어를 사용하여 필요한 패키지를 설치합니다.

pip install fastapi[all] graphene

FastAPI 앱 생성하기

FastAPI를 사용하여 간단한 앱을 생성해보겠습니다. 다음과 같이 코드를 작성합니다.

from fastapi import FastAPI

app = FastAPI()

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

GraphQL 스키마 작성하기

GraphQL 스키마를 작성해야 합니다. 스키마는 클라이언트가 요청할 수 있는 쿼리 형식과 데이터 모델을 정의합니다. 다음과 같이 코드를 작성해보겠습니다.

import graphene

class Query(graphene.ObjectType):
    hello = graphene.String()

    def resolve_hello(self, info):
        return "Hello, GraphQL!"

schema = graphene.Schema(query=Query)

FastAPI에 GraphQL 적용하기

마지막으로, FastAPI에 GraphQL을 적용해보겠습니다. 이를 위해 라우터를 추가하고, GraphQL을 처리할 함수를 작성해야 합니다. 다음과 같이 코드를 작성합니다.

from fastapi import FastAPI
from fastapi import Request
from starlette.graphql import GraphQLApp

app = FastAPI()

@app.middleware("http")
async def add_graphql_route(request: Request, call_next):
    if request.path == "/graphql" and request.method == "POST":
        graphql_app = GraphQLApp(schema=schema)
        return await graphql_app.handle_graphql(request=request)

    response = await call_next(request)
    return response

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

이제 /graphql 경로로 POST 요청을 보내면 GraphQL 쿼리를 실행할 수 있게 됩니다. FastAPI 애플리케이션에 GraphQL이 성공적으로 적용되었습니다!

이렇게 FastAPI에 GraphQL을 적용하는 방법을 알아보았습니다. GraphQL을 사용하면 클라이언트 애플리케이션이 필요한 데이터만 가져올 수 있으므로 성능과 개발 생산성을 향상시킬 수 있습니다.

#FastAPI #GraphQL