初めてのGraphQL Webサービスを作って学ぶ新世代API
初めてのGraphQL ―Webサービスを作って学ぶ新世代API
オライリー・ジャパン
著者:Eve Porcello、Alex Banks
訳者:尾崎沙耶、あんどうやす
賞賛の声
訳者まえがき
まえがき
1章 GraphQLへようこそ
1.1 GraphQLとは
1.1.1 GraphQLの言語仕様
1.1.2 GraphQLの設計原則
1.2 GraphQLの誕生
1.3 データ通信の歴史
1.3.1 RPC
1.3.2 SOAP
1.3.3 REST
1.4 RESTの課題
1.4.1 過剰な取得
1.4.2 過小な取得
1.4.3 RESTのエンドポイント管理
1.5 GraphQLの実情
1.5.1 GraphQLのクライアント
2章 グラフ理論
2.1 グラフ理論の用語
2.2 グラフ理論の歴史
2.3 木というグラフ
2.4 実世界でのグラフ
3章 GraphQLの問い合わせ言語
3.1 GraphQL APIの便利なツール
3.1.1 GraphiQL
3.1.2 GraphQL Playground
3.1.3 公開GraphQL API
3.2 GraphQLのクエリ
3.2.1 エッジと接続
3.2.2 フラグメント
3.3 ミューテーション
3.3.1 クエリ変数
3.4 サブスクリプション
3.5 イントロスペクション
3.6 抽象構文木
4章 スキーマの設計
4.1 型定義
4.1.1 型
4.1.2 スカラー型
4.1.3 Enum
4.2 コネクションとリスト
4.2.1 一対一の接続
4.2.2 一対多の接続
4.2.3 多対多の接続
4.2.4 異なる型のリスト
4.3 引数
4.3.1 データのフィルタリング
4.4 ミューテーション
4.5 入力型
4.6 返却型
4.7 サブスクリプション
4.8 スキーマのドキュメント化
5章 GraphQLサーバーの実装
5.1 プロジェクトのセットアップ
5.2 リゾルバ
5.2.1 ルートリゾルバ
5.2.2 型リゾルバ
5.2.3 InputとEnumの使用
5.2.4 エッジと接続
5.2.5 カスタムスカラー型
5.3 apollo-server-express
5.4 コンテキスト
5.4.1 MongoDBのインストール
5.4.2 コンテキストへのデータベースの追加
5.5 GitHub認可
5.5.1 GitHub OAuthのセットアップ
5.5.2 認可プロセス
5.5.3 githubAuthミューテーション
5.5.4 ユーザーの認証
5.6 まとめ
6章 GraphQLクライアントの実装
6.1 GraphQL APIの利用
6.1.1 フェッチリクエスト
6.1.2 graphql-request
6.2 Apollo Client
6.3 Apollo ClientとReact
6.3.1 プロジェクトの準備
6.3.2 Apollo Clientの設定
6.3.3 Queryコンポーネント
6.3.4 Mutationコンポーネント
6.4 認可
6.4.1 ユーザー認可
6.4.2 ユーザー識別
6.5 キャッシュ
6.5.1 フェッチポリシー
6.5.2 キャッシュの永続化
6.5.3 キャッシュの更新
7章 GraphQLの実戦投入にあたって
7.1 サブスクリプション
7.1.1 サブスクリプションの利用
7.1.2 サブスクリプションの処理
7.2 ファイルアップロード
7.2.1 サーバーでアップロードを処理する
7.2.2 Apollo Clientを使用した写真の新規投稿
7.3 セキュリティ
7.3.1 リクエストタイムアウト
7.3.2 データの制限
7.3.3 クエリ深さの制限
7.3.4 クエリの複雑さ制限
7.3.5 Apollo Engine
7.4 次の段階にすすむ
7.4.1 漸進的なマイグレーション
7.4.2 スキーマファースト開発
7.4.3 GraphQLイベント
7.4.4 コミュニティ
7.4.5 コミュニティのSlackチャンネル
付録A Relay各仕様解説
A.1 Global Object Identification
A.2 Cursor Connections
A.3 Input Object Mutations
A.4 Mutations updater
索引