GraphQL — мощный язык запросов для API, но его исследование и тестирование часто требует использования внешних инструментов, таких как GraphQL Playground, Insomnia или Altair. Однако эти инструменты могут нарушить привычный рабочий процесс терминала, особенно когда вы уже работаете с сервером через SSH, запускаете конвейер CI или просто предпочитаете работать в командной строке.
Проблемы с инструментами на основе браузера
Каждый разработчик GraphQL знает о необходимости不断ного переключения между редактором кода и браузером для тестирования запросов. Этот процесс не только нарушает рабочий процесс, но и имеет более глубокие проблемы. Инструменты на основе браузера не интегрируются с оболочкой терминала, что означает, что вы не можете передавать ответы GraphQL в другие скрипты или использовать их в конвейерах. Кроме того, эти инструменты не работают через SSH и не могут быть использованы в скриптах для непрерывной интеграции и доставки (CI/CD).
Построение инструмента командной строки
Для решения этих проблем можно построить инструмент командной строки, который позволяет исследовать и тестировать GraphQL API непосредственно из терминала. Этот инструмент должен уметь интроспектировать любой конечный пункт GraphQL, позволять исследовать схему взаимодействия, выполнять запросы с автозаполнением, управлять заголовками аутентификации и сохранять часто используемые запросы.
Настройка проекта
Для начала необходимо создать новый проект и установить необходимые зависимости. Создайте папку для проекта и перейдите в нее, затем выполните команды инициализации проекта и установки зависимостей:
mkdir gql-explorer && cd gql-explorer
npm init -y
npm install graphql graphql-tag node-fetch@2 chalk inquirer ora cli-table3 conf commander readline-sync strip-ansi
Каждая из этих зависимостей играет важную роль в построении инструмента:
graphqlиgraphql-tag: парсинг и валидация запросов GraphQLnode-fetch: отправка HTTP-запросов к конечным пунктам GraphQLchalk: подсветка синтаксиса для вывода JSONinquirer: интерактивные подсказки и автозаполнениеora: индикатор загрузкиcli-table3: форматирование таблиц схемыconf: сохранение запросов и настроекcommander: парсинг аргументов командной строки
Создание точки входа
Создайте файл index.js и сделайте его исполняемым:
touch index.js
chmod +x index.js
Это будет основной файл инструмента, в котором будет реализована логика исследования и тестирования GraphQL API. Далее мы будем работать над реализацией этой логики и добавлением функций для инструмента.