⇐ Назад

Оглавление

Предисловие.........................................................................................10

Благодарности.................................................................................10
Условные обозначения, используемые в книге................................11
Использование примеров кода........................................................12
Глава 1. Добро пожаловать в GraphQL................................................13
Что такое GraphQL...........................................................................14
Спецификация GraphQL.............................................................17
Принципы проектирования GraphQL..........................................18
Происхождение GraphQL.................................................................18
История транспортировки данных...................................................19
Удаленный вызов процедур.......................................................19
Простой протокол доступа к объектам......................................20
Архитектура REST.....................................................................20
Недостатки архитектуры REST.........................................................21
Чрезмерная выборка данных ....................................................22
Недостаточная выборка данных................................................24
Управление конечными точками REST.......................................26
GraphQL в реальном мире................................................................27
Глава 2. Теория графов......................................................................29
Терминология теории графов..........................................................32
История теории графов...................................................................35
Деревья как графы..........................................................................39
Графы в реальном мире..................................................................43
Глава 3. Анатомия запросов GraphQL..................................................47
Инструменты API GraphQL...............................................................50
GraphiQL....................................................................................50
GraphQL Playground...................................................................53
Открытые API GraphQL..............................................................54
GraphQL-запрос...............................................................................55
Ребра и соединения..................................................................59
Фрагменты................................................................................61
Мутации..........................................................................................69
Подписки.........................................................................................71
Самодиагностика.............................................................................73
Абстрактные синтаксические деревья..............................................75
Глава 4. Схема GraphQL......................................................................78
Определение типов.........................................................................79
Типы.........................................................................................79
Скалярные типы........................................................................81
Перечисления...........................................................................81
Соединения и списки.......................................................................82
Соединения «один к одному»....................................................84
Соединения «один ко многим»..................................................85
Соединения «многие ко многим»...............................................87
Списки разных типов.................................................................89
Аргументы.......................................................................................93
Фильтрация данных..................................................................94
Мутации..........................................................................................98
Типы ввода...................................................................................101
Возвращаемые типы......................................................................105
Подписки.......................................................................................106
Документация схемы.....................................................................107
Глава 5. API GraphQL.........................................................................111
Настройка проекта........................................................................112
Распознаватели.............................................................................113
Корневые распознаватели.......................................................115
Распознаватели типов.............................................................117
Использование вводов и перечислений...................................122
Ребра и соединения................................................................124
Пользовательские скаляры......................................................130
Сервер apollo-server-express..........................................................135
Контекст........................................................................................138
Установка MongoDB.................................................................139
Добавление базы данных к контексту.....................................140
Авторизация с помощью аккаунта GitHub......................................143
Настройка GitHub OAuth..........................................................144
Процесс авторизации..............................................................146
Мутация githubAuth.................................................................147
Аутентификация пользователей..............................................152
Резюме..........................................................................................159
Глава 6. Клиенты GraphQL.................................................................161
API GraphQL...................................................................................161
Запросы на выборку................................................................162
Инструмент graphql-request.....................................................163
Apollo Client...................................................................................167
Apollo Client и React.......................................................................168
Настройка проекта..................................................................169
Конфигурирование Apollo Client...............................................169
Компонент Query.....................................................................172
Компонент Mutation.................................................................177
Авторизация..................................................................................179
Авторизация пользователя......................................................180
Идентификация пользователя.................................................185
Работа с кэшем..............................................................................187
Политики выборки..................................................................187
Сохранение кэша....................................................................189
Обновление кэша....................................................................190
Глава 7. GraphQL в реальном мире....................................................196
Подписки.......................................................................................197
Работа с подписками...............................................................197
Управление подписками..........................................................204
Выгрузка файлов...........................................................................210
Обработка выгрузок на сервере..............................................210
Публикация новых фотографий с помощью Apollo Client..........212
Безопасность.................................................................................221
Тайм-ауты запроса..................................................................221
Ограничения данных...............................................................222
Ограничение глубины запроса................................................223
Ограничение сложности запроса.............................................226
Движок Apollo.........................................................................229
Дальнейшее обучение...................................................................230
Инкрементная миграция..........................................................230
В первую очередь — разработка схемы...................................232
События GraphQL....................................................................234
Сообщество.............................................................................235
Сообщество Slack Channels......................................................236
Об авторах.........................................................................................238
Об иллюстрации на обложке..............................................................239

Наверх