DjangoでGraphQLを学ぼう!〜事前準備編〜

こんにちは。KOUKIです。

今回は、Graphene-Djangoを使って、GraphQLを学びましょう。

記事まとめ

GraphQLとは

GraphQLは、Facebookが開発しているWeb APIのための規格で、 クエリ言語とスキーマ言語からなります。

REST APIだと、欲しい情報の数だけエンドポイント(URL)が必要になりますが、GraphQLではエンドポイントは一つだけで済みます。

例えば、以下のqueryをGraphQLサーバーに送信したとします。

データ送信後、次のような形式で、データを取得できます。

REST APIに比べると以下のメリットがあるようです。

GraphQLのメリット
・ エンドポイントを増やさずに欲しい情報を取得できる
・ 不必要な情報は取ってこない
・ フロントエンド・サーバーサイドの作業を完全に分業化できる
・ アプリケーションに縛られない自由なデータ取得サーバー(GraphQLサーバー)を立てられる

Djangoには、Graphene-Djangoという3rd-party製のモジュールがあり、かなり便利であると感じたため、ご紹介もかねてハンズオンしてみます。

プロジェクトの準備

Docker上にDjangoとReactの環境を構築するを参考にプロジェクトを作成しましょう。

今回は、フロントエンドはReact、サーバーサイドはDjango、基盤はDockerで作成します。

ここまで設定できたらビルドしましょう。

localhost:8000 及び localhost:3000にアクセスしてみましょう。

それぞれのスタート画面が出てきたら成功です。※起動に失敗した場合は、docker-compose buildを再実行してください

アプリケーションの作成

最初にGraphQLを実装するアプリケーションを作成します。

次のコマンドでアプリケーションを作成します。

次の構成でアプリケーションが作成されたと思います。

このapiを同一階層にあるappフォルダ配下に格納してください。

次にsettings.pyにapiを登録します。

Bookモデルの作成

api配下にBookモデルを追加しましょう。

マイグレーションを実行します。

このモデルを管理画面に表示できるようにしましょう。

管理ユーザーを作成します。

localhost:8000にアクセスし、作成した管理ユーザーでログインしましょう。

Authorモデルの追加

もう一つ、Authorモデルを追加しましょう。

マイグレーションを実行しましょう。

管理画面にも登録します。

管理画面にアクセスし、Author及びBookにデータを格納してみましょう。

GraphQLの実装

前準備はここまでにして、GraphQLを実装していきましょう。

まずは、settings.pyに、次の設定をしてください。

GRAPHENには、プロジェクトレベルで設定するスキーマーを登録します。

次のコマンドで、schema.pyを作成してください。

先ほどのスキーマー設定はこのファイルを指しています。

続いて、api配下にもschema.pyを作成します。

登録したBookを全て取得する処理を書きました。

最後にapp配下のurls.pyにエンドポイントを設定します。

graphiqlをFalseにするとGraphQLを使用不可にできます。

それでは、「http://localhost:8000/graphql/」にアクセスしてみましょう。

Queryの説明

今回は、次の設定を行いました。

これをqueryにすると次のようになります。

schema.pyに設定したフィールド名をキャメルケースで指定するようです。

データを格納して、上記のクエリを実行してみましょう。

直感的でわかりやすいですね。

長くなってきたので、ここまでにしましょう。

次回

次回も引き続き、Graph QLを学んでいきましょう。

参考書籍


コメントを残す