[python] Django에서 GraphQL을 사용한 API 개발하기

Django는 Python으로 작성된 강력한 웹 프레임워크로, GraphQL을 사용하여 API를 개발하는 데 매우 적합합니다. 이 글에서는 Django 프로젝트에 GraphQL을 통합하고 API를 작성하는 방법에 대해 알아보겠습니다.

1. GraphQL 이란?

GraphQL은 Facebook에서 만든 쿼리 언어로, 클라이언트가 필요한 데이터를 서버로부터 정확히 가져올 수 있도록 해줍니다. RESTful API와 비교하여 더 유연하고 효율적인 데이터 요청이 가능합니다.

2. Django 프로젝트에 GraphQL 추가하기

Django에는 여러 가지 GraphQL 라이브러리가 있지만, 여기서는 graphene-django를 사용하여 GraphQL을 프로젝트에 추가할 것입니다. 먼저, 필요한 패키지를 설치합니다.

pip install graphene-django

설치가 완료되면, settings.py 파일에서 INSTALLED_APPS'graphene_django'를 추가합니다.

INSTALLED_APPS = [
    # 기존 앱들
    'graphene_django',
]

그리고 urls.py 파일을 수정하여 GraphQL을 위한 URL을 추가합니다.

from django.urls import path
from graphene_django.views import GraphQLView

urlpatterns = [
    path('graphql/', GraphQLView.as_view(graphiql=True)),
]

이제 Django 프로젝트에 GraphQL이 추가되었습니다.

3. GraphQL 스키마 및 쿼리 작성

GraphQL 스키마는 데이터 타입 및 쿼리를 정의하는 데 사용됩니다. schema.py 파일을 생성하고, 스키마를 작성합니다.

import graphene

class Query(graphene.ObjectType):
    hello = graphene.String(name=graphene.String(default_value="World"))

    def resolve_hello(self, info, name):
        return f'Hello {name}'

schema = graphene.Schema(query=Query)

이제 hello 필드에 해당하는 데이터를 얻기 위한 쿼리를 작성합니다.

query {
  hello
}

4. 데이터베이스와 통합

기존 Django 모델과 GraphQL을 통합하여 데이터를 얻기 위해, 모델 타입을 정의하고 해당 필드를 GraphQL 스키마에 추가할 수 있습니다. 자세한 내용은 공식 문서를 참고하세요.

이제 Django 프로젝트에서 GraphQL API를 개발하기 위한 준비가 모두 끝났습니다. GraphQL을 통해 데이터를 효율적으로 요청하고 제공할 수 있게 되었습니다.

Happy coding! 🚀