[python] Flask-RESTful에서 GraphQL을 사용하는 방법

이번 글에서는 Flask-RESTful에서 GraphQL을 사용하는 방법에 대해 알아보겠습니다. Flask-RESTful은 Flask 프레임워크를 기반으로 한 RESTful API 개발을 도와주는 라이브러리입니다. GraphQL은 효율적인 API 호출을 위한 쿼리 언어와 런타임입니다. Flask-RESTful과 GraphQL을 결합하여 강력하고 유연한 API를 구축할 수 있습니다.

설치

먼저 Flask-RESTful과 Flask-GraphQL를 설치해야 합니다. 아래의 명령어로 설치할 수 있습니다.

pip install Flask-RESTful Flask-GraphQL graphene

Flask-GraphQL 설정

Flask-GraphQL을 Flask-RESTful 애플리케이션에 추가하기 위해 다음과 같이 설정해야 합니다.

from flask import Flask
from flask_graphql import GraphQLView
from graphene import ObjectType, String, Schema

app = Flask(__name__)
app.config['DEBUG'] = True

class Query(ObjectType):
    hello = String(description='A simple GraphQL query.')
    
    def resolve_hello(self, info):
        return 'Hello, world!'

schema = Schema(query=Query)

app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True))

if __name__ == '__main__':
    app.run()

위 코드에서는 Flask 애플리케이션을 생성하고, GraphQLView를 사용하여 GraphQL 엔드포인트를 추가했습니다. Query 클래스는 GraphQL 스키마의 쿼리 타입을 정의하며, hello 필드는 간단한 문자열을 반환합니다.

쿼리 실행하기

API의 GraphQL 엔드포인트는 /graphql에 위치하므로, 다음과 같이 cURL을 사용하여 쿼리를 실행할 수 있습니다.

$ curl -X POST -H "Content-Type: application/json" -d '{"query": "{ hello }"}' http://localhost:5000/graphql

응답은 다음과 같이 받을 수 있습니다.

{
    "data": {
        "hello": "Hello, world!"
    }
}

마무리

이제 Flask-RESTful과 Graphene을 사용하여 Flask 애플리케이션에 GraphQL을 통합하는 방법을 알아보았습니다. GraphQL은 RESTful API보다 유연하고 효율적인 API 개발을 가능케해줍니다. Flask를 사용하는 경우, Flask-RESTful과 Flask-GraphQL을 함께 사용하여 강력한 API를 만들어보세요.


참고문헌: