GraphQL: язык запросов для современных веб-приложений
GraphQL – это язык запросов, альтернативный REST и ситуативным архитектурам веб-сервисов, самая революционная технология извлечения данных со времен Ajax. Точно как React изменил взгляд веб-разработчика на создание пользовательских интерфейсов, GraphQL полностью изменит практику передачи данных по HTTP. Это практическое руководство поможет вам приступить к работе с языком GraphQL.
Автор(ы) | Алекс Бэнкс, Ева Порселло |
Переводчик | С. Черников |
Издательство | Питер |
Серия | Бестселлеры O'Reilly |
Год издания | 2019 |
ISBN | 978-5-4461-1143-5 |
Возрастное ограничение | 16+ |
Кол-во страниц | 240 |
Формат страниц | 60x90/16 (145x215 мм) |
Язык | Русский |
Переплёт | Мягкий |
Доп. сведения | Офсетная бумага |
Иллюстрации | черно-белые |
Тираж | 1000 экз. |
Вес | 240 г |
Предисловие.........................................................................................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