Java
GraphQL

howtographql.comのHands on Tutorial(Java)をやってみた

https://www.howtographql.com/
のGraphQLのハンズオンチュートリアルをやってみました。

一通りやることでJavaでGraphQLサーバー構築を体験できました。
備忘録としてどのような内容かを書き下します。

Tutorial内容

Getting Started

mvn archetype:generateでそれっぽいプロジェクトを作成

サーバーの実装は自由に書いてもいいが、今回は言語非依存のスキーマを定義してから実装する。

schema.graphqls
type Link {
  url: String!
  description: String!
}

type Query {
  allLinks: [Link]
}

schema {
  query: Query
}

Queries

Query.java
public class Query implements GraphQLRootResolver

スキーマに定義した内容を実装していく
- Link(POJO)
- LinkRepository

GraphiQLでサーバーのテストを行う
バシバシ補完してくれるので便利
Jul-10-2018 23-27-43.gif

Mutations

mutationもクエリーと別にクラスを用意する

Mutation.java
public class Mutation implements GraphQLRootResolver

Connectors

MongoDBとつないでInsetrtしてみる
mongodb-driverを使ってLinkRepositoryを実装する

Authentication

サインインしてみる
サインインは副作用のある動作なのでMutationとして扱う
オブジェクトを含むdata classを扱う場合はそのresolverを用意する

GraphQLContextを使ってheaderのAuthorizationを読み込む

More Mutations

postedByを解決するためのresolverを設定
導出すべきフィールドがあるときにresolverを設定するようだ
新しいScalarをつくる

Error Handling

filterGraphQLErrorsをオーバーライドしてハンドリングする

Subscriptions

説明なし(これがやりたかったのだが、、、)

Filtering

fiterはPOJO
フィルター設定内容はクライアントで決める

Pagination

どのようなページングをするかはクライアントで決める

Alternative approaches to schema development

基本的にはスキーマファーストだけどgraphql-spqrを使ってコードファーストでも書ける
対象メソッドにアノテーションを打っていく

所感

雰囲気コーディングしているだけでひとまずGraphQLサーバーが実装できてしまった。
その中でSDLやGraphQLのクエリの書き方もなんとなくわかったので良かった。

だらだらやって3日間かかったが、集中してやれば1時間ぐらいで終わりそう。