Клиенты GraphQL
Это подборка и обзор некоторых из наиболее популярных клиентов для взаимодействия с GraphQL.
GraphiQL
GraphiQL — это IDE для выполнения queries GraphQL par excellence. Выпущенный одновременно с GraphQL, он сразу же наглядно продемонстрировал, как GraphQL может предложить опыт разработки, превосходящий существующие API, объединив в одном месте клиент для выполнения queries к серверу GraphQL и проводник для просмотра документации по схеме.

Среди прочего, GraphiQL предлагает следующие возможности:
- Вкладки
- Пользовательские заголовки
- Подсветка синтаксиса
- Интеллектуальное автодополнение полей, аргументов, типов и многого другого
- Выделение и отображение ошибок в режиме реального времени для queries и переменных
- Автоматическое дополнение queries и переменных
- Автоматическое добавление обязательных полей в queries
- Проводник по документации с поиском и поддержкой markdown
- История queries с использованием local storage
- Темы оформления
Демо доступно на graphql.org/swapi-graphql. Составьте GraphQL query с помощью редактора, нажмите кнопку «Execute Query» в центре между двумя панелями и посмотрите на ответ.
Voyager
GraphQL Voyager — это квинтэссенция интерактивного визуализатора схем, отображающего (как они сами пишут в документации) «граф за GraphQL».

Он поставляется со следующими возможностями:
- Быстрая навигация по графу.
- Левая панель с подробной информацией о каждом типе.
- Опция «Skip Relay», упрощающая граф путём удаления оберточных классов Relay.
- Возможность выбрать любой тип в качестве корня графа.
Живое демо доступно на ivangoncharov.github.io/graphql-voyager.
DociQL
DociQL предоставляет команду для генерации красивой статической документации HTML5 из endpoint'а GraphQL. После выполнения команды результатом будет директория с файлами HTML, CSS и JS, которые необходимо скопировать на веб-сервер для отображения документации по схеме GraphQL.
Сгенерированная документация по умолчанию отображается в виде одностраничного макета с 3 колонками: ссылки на все типы — в левой колонке, описание — в центре, пример query — справа:

Она поставляется со следующими возможностями:
- Использует introspection query для получения схемы GraphQL и генерирует документацию на лету.
- Генерирует пример запроса и ответа со ссылками «Try it now».
- Позволяет пользователю определять варианты использования и группировать их по доменам.
- Настраивается через шаблоны Handlebars и стили SCSS.
- Поддержка markdown в описаниях API.
- Адаптивный макет HTML5 и CSS3, работающий на всех устройствах и размерах экрана.
- Частичная документация, встраиваемая в существующий сайт.
Демо сгенерированной документации доступно на wayfair.github.io/dociql.
SpectaQL
SpectaQL строится поверх DociQL, чтобы лучше адаптировать его для GraphQL. Он предоставляет тему, отображающую только информацию, релевантную для GraphQL, и убирающую контент из домена Swagger/OpenAPI (например, исключает сообщения «Response Content-Types: application/json» и «Response Example (200 OK)», показываемые в примере query).

SpectaQL также позволяет указывать источник схемы GraphQL несколькими способами:
- Из живого endpoint'а с помощью introspection query.
- Из файла, содержащего результат introspection query.
- Из файла, нескольких файлов или glob, указывающих на определения схемы в SDL.
Демо сгенерированной документации доступно на useanvil.com/docs/api/graphql/reference.
Postman
Postman — это платформа для создания и использования API. Хотя Postman создан не специально для GraphQL, его можно использовать для выполнения GraphQL queries и оптимизации совместной работы при создании GraphQL API.

Postman включает инструменты, ускоряющие жизненный цикл API: проектирование, тестирование, документирование и мокирование API. Кроме того, API можно организовывать через воркспейсы для совместной работы с членами команды по всему миру.
Altair
Altair — ещё один GraphQL Client IDE, похожий на Postman, но специально предназначенный для GraphQL.

Помимо всех возможностей, предлагаемых любым GraphQL client IDE, Altair также поддерживает окружения, позволяя переключаться между API для локального, staging и production окружений, а также коллекции queries для удобного обмена с членами команды.