• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Гостевая статья Использование GraphiQL IDE для доступа к API GraphQ

Я работаю над серией постов о GraphQL, чтобы лучше узнать, что это такое и каковы его возможности. Я надеюсь, что вы тоже найдете это полезным!

В последнем посте я просто хотел понять, что такое GraphQL, и обоснование его использования. Я узнал, что речь идет о гибкости и эффективности; получить именно то, что вам нужно, в том формате, в котором вы нуждаетесь. Теперь я хочу посмотреть на фактическую реализацию.

К сожалению, Facebook потратил годы на разработку удивительного инструмента (это верно, FB разработал GraphQL), но ломался, что все, что он делал, оставалось в пятнах . К счастью, GraphQL имеет открытый исходный код, и есть еще один технологический гигант, который также реализовал его, поэтому посмотрим, как они это сделали.

Когда GitHub начал переходить на новую версию своего API несколько лет назад, . Их рассуждения очень похожи на то, что я читал в другом месте и испытал на себе.

Наши ответы были раздуты и заполнены всевозможными *_url подсказками в ответах JSON, чтобы помочь людям продолжать переходить через API, чтобы получить то, что им нужно. Несмотря на всю предоставленную информацию, мы слышали от интеграторов, что наш REST API также не был очень гибким. Иногда требовалось два или три отдельных вызова, чтобы собрать полное представление о ресурсе. Казалось, что наши ответы одновременно отправили слишком много данных и не включали данные, которые нужны потребителям.
Запросы
Одним из инструментов, доступных в GraphQL, является GraphiQL , который позволяет пользователям вашего API создавать запросы прямо в браузере и видеть немедленные результаты. Это огромная экономия времени!

С помощью REST я всегда использовал для управления своими запросами без необходимости иметь полноценное приложение с самого начала, но оно все еще включает в себя метод проб и ошибок. Вы должны прочитать документы API, выяснить, что вы хотите назвать и как, получить результат и проверить его, внести коррективы, сделать больше звонков на другие конечные точки, бла-бла-бла-бла. Иногда провайдер API создает своего рода «Проводник API», который позволяет вам пробовать вызовы прямо в браузере, но его нелегко разрабатывать и поддерживать ...

GraphiQL - готовый к использованию "API Explorer". Он интегрирует документы API прямо в интерфейс «typeaheads» (аналогично intellisense в Visual Studio), что помогает вам выяснить, что запрашивать, а затем показывает результаты. Давайте попробуем .
  • Дайте ему доступ к учетной записи GitHub ... несмотря на то, что это GitHub. 🤨
  • Нажмите треугольник «Выполнить запрос» в левом верхнем углу, чтобы выполнить запрос по умолчанию ... информация о вас!
  • Нажмите кнопку «Документы» с правой стороны, чтобы просмотреть документацию по API. Обратите внимание на два корневых типа - запрос и мутация. Запрос похож на REST GET, а мутация похожа на POSTили DELETE. Придерживайтесь запроса на данный момент.
  • По мере детализации вы можете видеть объекты для запроса, параметры для ограничения ваших запросов и другие дочерние объекты. Это как будто вы просматриваете их базу данных!

viewer.png


Вот несколько запросов, которые я попытался выполнить:

default-query.png

"Привет, мир!" запросов GraphQL ...

repos.png

Запрос URL-адресов моих собственных репо и домашних страниц репо, которые я раздвоил

followers-all-the-way-down.png

Моя биография, мои последователи, мои последователи последователей биос ... почему? Потому что я могу. 😑
Мутации
Как только вы выполните несколько запросов, попробуйте мутации. Вы уже предоставили доступ ко всему, что есть в вашей учетной записи, к инструменту, поэтому вы можете обновлять (изменять) практически все, что есть в вашей учетной записи. Вот небольшой снимок экрана, на котором я делаю две вещи:
  1. Запрос на получение идентификатора, связанного с открытой проблемой в одном из моих репозиториев
  2. Мутация, чтобы добавить несколько реакций на проблему

Как и при выполнении запросов, наличие документации на правой стороне - это прекрасно. Я был в состоянии развернуть и увидеть, что addReactionтребуется AddReactionInputтип, который состоит из трех вещей - и только два требуются (обратите внимание на !).

mutation-docs.png

Для addReaction требуется изменить идентификатор реакции и добавить тип реакции.

Единственная вещь, которая казалась мне неинтуитивной, это требование иметь тело в мутации, как если бы оно требовало возврата чего-либо, даже если вы выполняли REST, POSTвам было бы все равно, кроме кода возврата 200 OK.

mutation_nobody.png

Отсутствие тела или наличие пустых скобок делает GraphiQL грустным 😢
Следующий шаг?
Я думаю, что следующее, что я хотел бы попробовать, - это использовать такой инструмент, как GraphQL для .NET, чтобы получить доступ к GitHub API из приложения, а не GraphiQL. 😎

Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!