経緯
以前からSpringを使用しての案件に携わることが多かったのですが、使用したことがないプロジェクトもあるので、勉強がてら色々と試してみようと思いました。
GraphQLとは?
この辺が分かりやすく書かれていると思うので、参考にしてください。
プロジェクト作成
ファイル>新規>Springスターター・プロジェクト(Spring initializr)を選択します。
この辺はご自身の環境に合わせてください。
Spring Web、Spring for GraphQLを選択し、完了ボタンを押下します。
GraphQLスキーマの作成
schema.graphqls を src/main/resources/graphql フォルダーに追加します。
すべての GraphQL スキーマにはトップレベルの Query 型があり、そのフィールドはアプリケーションによって公開されるクエリ操作です。ここで、スキーマは、特定の本の詳細を返す bookById と呼ばれる 1 つのクエリを定義します。
また、フィールド id、name、pageCount、author を持つ型 Book と、フィールド firstName および lastName を持つ型 Author も定義します。
データのソース
GraphQL の主な強みは、どこからでもデータを取得できることです。データは、データベース、外部サービス、静的なメモリ内リストから取得できます。
簡素化するために、本と作成者のデータは、それぞれのクラス内の静的リストから取得されます。
Book および Author データソースを作成する
データを取得するためのコードの追加
Spring for GraphQL は、アノテーションベースのプログラミングモデルを提供します。コントローラーのアノテーション付きメソッドを使用して、特定の GraphQL フィールドのデータをフェッチする方法を宣言できます。
Book および Author の横にある、メインアプリケーションパッケージの BookController.java に以下を追加します。
@QueryMapping でアノテーションが付けられた bookById という名前のメソッドを定義することにより、このコントローラーは Query 型で定義されているように Book を取得する方法を宣言します。クエリフィールドはメソッド名から決定されますが、アノテーション自体で宣言することもできます。
GraphiQL プレイグラウンドを有効にする
GraphiQL は、クエリの作成と実行などに役立つビジュアルインターフェースです。この構成を application.properties ファイルに追加して、GraphiQL を有効にします。
クエリを実行する
Spring アプリケーションを開始し、http://localhost:8080/graphiql に移動します。
クエリを入力し、ウィンドウの上部にある再生ボタンをクリックします。
このようなレスポンスが表示されるはずです。
終わりに
今回は試すだけが目的だったので、チュートリアルを実施する形にしましたが、まだまだ奥が深そうでもあるし、実務で利用する際に色々な可能性が見えてきました。今後触れる機会があれば、もっと深くまで学んでいきたいと思います。