現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。2018の9日目の記事です。ジョンミンと申します。2018」に寄稿させていただく機会をいただきましたので、前から興味のあったGraphQLのAPIを実装してみました。本記事では、GraphQLの概要とAPIの作り方を紹介します。ターゲット本記事は、次の読者を想定して書かれています。利用している技術APIはJavaで実装しました。利用したJavaのバージョンとライブラリは次の通りです。Javagraphql-spring-boot-starter:5.2.0graphql-java-tools:5.1.0graphiql-spring-boot-starter:5.2.0GraphQL概要APIを作る前に簡単にGraphQLの概要を説明します。Point(絶対ではありません。APIの定義をするため基本的な要素の「Schema、Type、QueryとMutation」について簡単に説明します。文字だけだとわかりにくいと思いますので、ここでは概要だけ知っていただければ大丈夫です。APIで扱うデータのことです。個人的にはQueryで取得したり、Mutationで登録/更新/削除の時に扱うデータという認識です。QueryRESTでいうGetです。データを取得する定義をするものです。MutationRESTでいうPost/Patch/Put/Deleteです。データの登録/更新/削除の定義をするものです。SchemaTypeやQuery、MutationなどのAPIの振る舞いを定義するところです。長くなりましたが、ここからが本番です。(`id`))自分はDocker利用して作成しました。resourcesGradle定義GraphQLAPIを作成するため、graphql、graphiqlおよびlombokのライブラリを定義します。"com.graphql-java-kickstart:graphql-spring-boot-starter-test:5.1"}参考:サンプルコードのschema.graphqlsSchema定義ここからは作成するAPI概要に書いている通りにTypeやQuery、Mutationの定義をSchemaに書いていきます。Schemaファイルの作成Schemaを配置するディレクトリを次の階層で作成してください。src/main/resources/graphqlSchemaファイルを作成してください。src/main/resources/graphql/schema.graphqls参考:サンプルコードのschema.graphqls作ったschema.graphqlsの中に次から説明するTypeやQuery、Mutationの定義を書いていきます。実際はSchema定義ファイルは目的に応じてファイルを分けるのがいいですが、今回はschema.graphqlsにまとめて定義しています。Type定義GraphQL概要のTypeで説明した通りにAPIで扱うデータを定義します。src/main/resources/graphql/schema.graphqlsの中に定義します。String}Query定義GraphQL概要のQueryで説明した通りにAPIでのデータ取得の定義をします。src/main/resources/graphql/schema.graphqlsの中に定義します。Author}Mutation定義GraphQL概要のMutationで説明した通りにAPIでのデータの登録/更新/削除の定義をします。src/main/resources/graphql/schema.graphqlsの中に定義します。Class作成ここまでSchemaの定義が完了したので、実際のTypeのClassを作っていきます。Classと記載します)。Schemaに定義したTypeの通りにDataを定義します。Dataの定義は下記で作ったtypesの中で作っていきます。Toolで提供するものです。ClassのMethodやFiledで行います。Classが複雑になると思います。Class内だけではなくMappingできるようにしたものがResolverとなります。Classesをご参照ください。これからResolverでQuery、Mutationの実装をしていきます。実装するPackageは下記のようになりますので、Packageを作成してください。ClassにMappingするbooksのところをBookResolverの中のbooks関数の結果をMappingするようになります。Classがありません。Resolverです。ResolverにQueryを実装します。ResolverはGraphQLQueryResolverをimplementsすることで作れます。ResolverにMutationを実装します。ResolverはGraphQLMutationResolverをimplementsすることで作れます。}}起動これから実装したAPIを動かしてみましょう。下記のようにbootRunコマンドでサーバーを立ち上げた後にアクセスURLにアクセスするとAPIの動作確認ができます。bootRunアクセスURLhttp://localhost:8080/graphiqlまとめ実際にAPIを作ってみると、思っていたよりも簡単に実装することができました。今回、GraphQLを使ってAPIを実装してみましたが、今後もGraphQLのメリットが活かせるプロダクトを実装する際にはGraphQLの導入を検討したいと感じました。この記事を読んでいただいた皆さんにもGraphQLに興味を持っていただけたら幸いです。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。