How to GraphQLをScalaでやってみたのでメモ
こんにちは、P1です。
GraphQL、最近流行りですよね。今回はHow to GraphQLをScalaでやってみたので備忘録として残しておきます。
ScalaもGraphQLも全然出来ないので参考程度に見てくれると嬉しいです。
How to GraphQLは https://www.howtographql.com/から始められます。
やりながらメモをしていったリポジトリは https://github.com/projectormato/Learn-GraphQLになります。 直下のREADMEにはFundamentalsの方のメモが書いてあります。
実際に編集していったのは https://github.com/projectormato/Learn-GraphQL/tree/master/howtographql-sangria/src/main/scala/com/howtographql/scala/sangria にあります。cloneして
sbt run
してhttp://localhost:8080/にアクセスすれば実際にクエリを実行出来ると思います。
最初は
query { allLinks { id name description } }
のようなクエリを実行できるようにLinkモデルの定義から始めて
query { link(id: 1){ id name } links(ids: [2, 3]){ id name } }
このような引数のあるクエリを実行できるようにしたり
User、Voteモデルを追加し関係性を持たせ
query { links(ids :[1,2]){ url votes { user{ name } } } }
のようなクエリを実行できるようにし、
mutation addMe { createUser( name: "Mario", authProvider:{ email:{ email:"mario@example.com", password:"p4ssw0rd" } }){ id name } }
のようなmutationを各モデルで実行出来るようにしてから認証の実装までを行いました。
一応章ごとにcommitしてみたので良かったら参考にしてください。
新しいモデルの定義やVoteとUserの関係の実装などはやってみてね!みたいな感じで自分でやってみて答え合わせなども出来るようになってました。
まだまだScalaに対する理解も全然な中やってみたので、よく分からなかった部分もあるのでこれからも色々使ってみて理解を深めていきたいと思います。