2019-10-22 GraphQL を触ってみる
#graphql
https://dev.classmethod.jp/server-side/node-js-server-side/graphql-tutorial-nodejsexpress/
https://github.com/graphql/express-graphql
express + express-graphql
なるほど
https://qiita.com/zonomaa/items/5de4b14dcd839db5f148
https://github.com/apollographql/apollo-server
express + apollo
なるほど
DSL で query を定義すると、それに合わせてデータが降ってくるので fetch してねって感じか
users(limit: Int): [User] とかまさにそう
Controller の代替になる?
DSL から TypeScript の type を生成する君ほしい
DSL から mock 作る君がほしい
https://graphql-code-generator.com/docs/getting-started/
DSL から TypeScript のコードを生成してくれる君
apollo との比較が気になる
yarn graphql-codegen init でターミナルからぽちぽちできる
package.json が更新されるので yarn を実行して依存ライブラリを入れること
プラグイン一覧
https://graphql-code-generator.com/docs/plugins/
frontend と backend 向けにそれぞれ生成できる
https://graphql-code-generator.com/docs/getting-started/development-workflow#monorepo-and-yarn-workspaces
frontend は operations (query とか mutation) の型定義
backend は resolvers の型定義
ApolloServer の typeDefs には普通に文字列として渡せばいい感じかな
graphql-codegen と apollo で resolvers の型定義が違う
実データは data => user => user ってオブジェクトなんだけど、型定義では data => user になっている
これは実装方法がどこかおかしい感じする
validation はされないか
https://github.com/apollographql/apollo-tooling
DSL から TypeScript のコードを生成してくれる君
他のこともできそう
SaaS としての apollo との連携を前提としている?
yarn apollo client:codegen --target typescript --queries ./schema/queries --localSchemaFile ./schema/schema.graphql --includes "schema/queries/**"
これでローカルの schema と query を読みに行って generate してくれる
client だけか...
https://www.apollographql.com
改めて読んで見る
BFF っぽい
GraphQL ベストプラクティス
https://principledgraphql.com
https://www.apollographql.com/docs/graphql-tools/mocking/
mock できそう
vscode の拡張
有名そうなやつ
kumar-harsh.graphql-for-vscode
prisma.vscode-graphql
apollographql.vscode-apollo
apollo とか prisma を使っているならその拡張機能で良さそう
そうじゃないなら一番上のやつがいいかなあ