FastAPI는 빠르고 현대적인 Python 웹 프레임워크입니다. 이 프레임워크를 사용하면 쉽게 GraphQL을 사용할 수 있습니다. GraphQL은 API를 위한 쿼리 언어입니다. 이를 통해 클라이언트는 필요한 데이터를 정확하게 요청할 수 있습니다.
FastAPI와 GraphQL을 함께 사용하기 위해 다음과 같은 단계를 따를 수 있습니다.
1. FastAPI 설치하기
FastAPI를 사용하기 위해 먼저 FastAPI를 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 FastAPI를 설치합니다.
pip install fastapi
또한, FastAPI의 기본 의존성인 pydantic
도 설치해야 합니다.
pip install pydantic
2. 필요한 패키지 설치하기
FastAPI와 GraphQL을 함께 사용하려면 몇 가지 패키지가 필요합니다. 다음 명령어를 사용하여 필요한 패키지를 설치합니다.
pip install graphene pydantic fastapi-starlette requests
3. GraphQL 스키마 작성하기
GraphQL은 스키마에 따라 데이터를 요청합니다. 스키마는 데이터 모델을 정의하고 어떤 데이터를 요청할 수 있는지 정의합니다. FastAPI와 함께 사용하기 위해 스키마를 작성해야 합니다.
from typing import List
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
class Query(BaseModel):
items: List[Item]
class Mutation(BaseModel):
create_item: Item
schema = graphene.Schema(query=Query, mutation=Mutation)
4. FastAPI 앱 생성하기
from fastapi import FastAPI
from starlette.graphql import GraphQLApp
app = FastAPI()
app.add_route("/graphql", GraphQLApp(schema=schema))
5. FastAPI 앱 실행하기
FastAPI 앱을 실행하기 위해 다음과 같은 명령어를 사용합니다.
uvicorn main:app --reload
main
은 FastAPI 앱의 진입점 파일명입니다. 만약 다른 파일로 진입점을 설정했다면 해당 파일명을 사용하면 됩니다.
6. GraphQL 쿼리 수행하기
위의 단계를 완료하면 FastAPI 서버가 실행됩니다. 이제 클라이언트에서 GraphQL 쿼리를 수행할 수 있습니다. 클라이언트에서는 /graphql
엔드포인트로 쿼리를 보냅니다.
import requests
query = '''
query {
items {
name
price
}
}
'''
response = requests.post('http://localhost:8000/graphql', json={'query': query})
위의 예제는 FastAPI 서버에 /graphql
엔드포인트로 items
데이터와 name
, price
를 요청하는 쿼리를 보내는 방법입니다. 응답은 JSON 형식으로 반환됩니다.
이제 FastAPI와 GraphQL을 함께 사용할 수 있습니다. GraphQL을 통해 클라이언트는 필요한 데이터만 정확하게 요청할 수 있고, FastAPI를 통해 빠르고 안정적인 웹 애플리케이션을 개발할 수 있습니다.