GraphQL은 클라이언트가 원하는 데이터를 정확히 요청하고 서버는 그에 맞는 응답을 제공하기 위한 쿼리 언어입니다. FastAPI는 Python 기반 웹 프레임워크로서, 강력하고 효율적인 API 개발을 지원하는 도구입니다. FastAPI를 사용하여 GraphQL을 지원하는 방법에 대해 알아보겠습니다.
1. 필수 패키지 설치
FastAPI에서 GraphQL을 지원하려면 몇 가지 패키지를 설치해야 합니다. 다음 명령을 사용하여 필요한 패키지를 설치하세요.
pip install fastapi
pip install graphene
pip install uvicorn
2. GraphQL 스키마 정의하기
GraphQL 스키마는 어떤 타입의 데이터를 요청할 수 있는지 정의하는 역할을 합니다. 예를 들어, 사용자를 나타내는 User 타입을 정의하기 위해 다음과 같이 스키마를 작성할 수 있습니다.
import graphene
class User(graphene.ObjectType):
id = graphene.Int()
name = graphene.String()
email = graphene.String()
3. 쿼리 및 뮤테이션 정의하기
쿼리(query)는 데이터를 읽기 위한 연산을 정의하고, 뮤테이션(mutation)은 데이터를 변경하기 위한 연산을 정의합니다. 예를 들어, 사용자를 생성하는 뮤테이션을 정의하기 위해 다음과 같이 작성할 수 있습니다.
class CreateUser(graphene.Mutation):
class Arguments:
name = graphene.String()
email = graphene.String()
user = graphene.Field(User)
def mutate(self, info, name, email):
user = User(id=1, name=name, email=email)
return CreateUser(user=user)
class Mutation(graphene.ObjectType):
create_user = CreateUser.Field()
4. FastAPI 앱 생성하기
GraphQL을 지원하기 위한 FastAPI 앱을 생성합니다. 다음과 같이 작성하세요.
from fastapi import FastAPI
from graphene import Schema
app = FastAPI()
@app.post('/graphql')
async def graphql(query: str):
schema = Schema(query=Query, mutation=Mutation)
result = schema.execute(query)
return result.to_dict()
5. 실행하기
FastAPI를 실행하고 http://localhost:8000/graphql
에 POST 요청을 보내면 GraphQL 쿼리를 실행할 수 있습니다.
GraphQL Playground 등의 도구를 사용하여 다양한 쿼리 및 뮤테이션을 실행해보세요!
위에서는 간단한 예제를 사용하여 FastAPI에서 GraphQL을 지원하는 방법을 설명하였습니다. 보다 복잡한 스키마 및 쿼리를 구성할 수 있으며, 자세한 내용은 FastAPI 문서와 Graphene 문서를 참조하세요.