3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring for GraphQLを試してみた

Last updated at Posted at 2025-02-24

経緯

以前からSpringを使用しての案件に携わることが多かったのですが、使用したことがないプロジェクトもあるので、勉強がてら色々と試してみようと思いました。

GraphQLとは?

この辺が分かりやすく書かれていると思うので、参考にしてください。

プロジェクト作成

image.png

ファイル>新規>Springスターター・プロジェクト(Spring initializr)を選択します。

image.png

この辺はご自身の環境に合わせてください。

image.png

Spring Web、Spring for GraphQLを選択し、完了ボタンを押下します。

GraphQLスキーマの作成

image.png

image.png

schema.graphqls を src/main/resources/graphql フォルダーに追加します。
すべての GraphQL スキーマにはトップレベルの Query 型があり、そのフィールドはアプリケーションによって公開されるクエリ操作です。ここで、スキーマは、特定の本の詳細を返す bookById と呼ばれる 1 つのクエリを定義します。
また、フィールド id、name、pageCount、author を持つ型 Book と、フィールド firstName および lastName を持つ型 Author も定義します。

データのソース

GraphQL の主な強みは、どこからでもデータを取得できることです。データは、データベース、外部サービス、静的なメモリ内リストから取得できます。
簡素化するために、本と作成者のデータは、それぞれのクラス内の静的リストから取得されます。
Book および Author データソースを作成する

image.png

image.png

データを取得するためのコードの追加

Spring for GraphQL は、アノテーションベースのプログラミングモデルを提供します。コントローラーのアノテーション付きメソッドを使用して、特定の GraphQL フィールドのデータをフェッチする方法を宣言できます。
Book および Author の横にある、メインアプリケーションパッケージの BookController.java に以下を追加します。

image.png

@QueryMapping でアノテーションが付けられた bookById という名前のメソッドを定義することにより、このコントローラーは Query 型で定義されているように Book を取得する方法を宣言します。クエリフィールドはメソッド名から決定されますが、アノテーション自体で宣言することもできます。

GraphiQL プレイグラウンドを有効にする

GraphiQL は、クエリの作成と実行などに役立つビジュアルインターフェースです。この構成を application.properties ファイルに追加して、GraphiQL を有効にします。

image.png

クエリを実行する

Spring アプリケーションを開始し、http://localhost:8080/graphiql に移動します。
クエリを入力し、ウィンドウの上部にある再生ボタンをクリックします。

image.png

このようなレスポンスが表示されるはずです。

image.png

終わりに

今回は試すだけが目的だったので、チュートリアルを実施する形にしましたが、まだまだ奥が深そうでもあるし、実務で利用する際に色々な可能性が見えてきました。今後触れる機会があれば、もっと深くまで学んでいきたいと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?