今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。
https://www.ohmsha.co.jp/book/9784873118932/
正誤表やDLデータ等がある場合はこちらに掲載しています
賞賛の声
訳者まえがき
まえがき
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
索引