7.2 FlaskとGrapheneを使ったGraphQLAPIの実装

7.2 FlaskとGrapheneを使ったGraphQLAPIの実装 #

Flaskと、GraphQLライブラリであるGrapheneを使用して、GraphQL APIを実装する方法を説明します。

必要なパッケージのインストール #

まず、必要なパッケージをインストールしましょう。新しいPython環境を作成し、次のコマンドを実行します:

$ pip install flask
$ pip install graphene
$ pip install flask-graphql

Flaskアプリの設定 #

まず、最も基本的なFlaskアプリを設定します:

from flask import Flask
app = Flask(__name__)

GraphQLスキーマの定義 #

次に、GraphQLスキーマを定義します。GraphQLのスキーマは、APIで使用可能なクエリとその戻り値の型を定義します。

以下は簡単なスキーマの例です:

import graphene

class Query(graphene.ObjectType):
    hello = graphene.String(description='A typical hello world')

    def resolve_hello(self, info):
        return 'World'

schema = graphene.Schema(query=Query)

上記のスキーマでは、“hello"というクエリを定義し、文字列を返すことができます。“resolve_hello"関数は、クエリが実行されるときに呼び出され、戻り値はクエリの結果として使用されます。

GraphQLエンドポイントの作成 #

次に、Flask-GraphQLを使用して、GraphQLエンドポイントを作成します:

from flask_graphql import GraphQLView

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

上記のコードでは、"/graphql"パスにエンドポイントを作成し、先ほど作成したスキーマを使用しています。“graphiql"パラメータをTrueに設定すると、GraphiQLという内蔵のGraphQLエディタを使用することができます。

Flaskアプリの実行 #

最後に、アプリを実行します:

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

これで、ブラウザで"http://localhost:5000/graphql"にアクセスすると、GraphQLエディタが表示され、“hello"クエリを試すことができます:

query {
  hello
}

これを実行すると、次のような結果が得られます:

{
  "data": {
    "hello": "World"
  }
}

以上が、FlaskとGrapheneを使ったGraphQL APIの基本的な実装方法です。