Гостевая статья Что такое GraphQL и чем он отличается от REST?

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

Эти API часто реализуются с использованием , стандарта для обеспечения доступности веб-ресурсов более десяти лет. Фактически, когда вы получаете доступ к веб-странице, ваш браузер выполняет поиск GETдля этой страницы и каждого ресурса, который ему необходим (изображения, таблицы стилей и т. Д.).

postman1.png


browser1.png


postman2.png


browser2.png


Запрос страницы и изображения на странице через post и веб-браузер
Существует другой способ доступа к веб-ресурсам, который называется . Впервые я услышал об этом несколько лет назад в какой-то статье о Facebook, но в то время я не обращал на это особого внимания. До недавнего времени я не осознавал, что Facebook на самом деле его разработал, и несколько лет назад его тоже открыли.

Что такое GraphQL?
Как бы нам ни хотелось думать, что есть один «лучший» способ сделать что-то, GraphQL - это альтернатива REST, а не замена. И хотя , основное отличие состоит в том, что GraphQL позволяет вам создавать запросы, чтобы получить именно (и только) данные, которые вас интересуют.

API, который реализует интерфейс REST, позволяет вам (например) очень легко получить GET некоторые данные об объекте - и по умолчанию вы получаете весь шебанг. Если вы можете ограничить то, что вы получаете, или немного настроить возвращенный набор данных, это только потому, что разработчики написали код, явно поддерживающий эти ограничения и настройки. Как это выглядит, будет отличаться в каждом API ... если он вообще существует.

Возьмите в качестве примера, который встроен в движок блога, который я использую для этого сайта. Вы можете запросить данные по отдельным сообщениям, авторам и т. Д., Что является стандартным тарифом. Кроме того, разработчики предоставили несколько параметров запроса, чтобы повлиять на возвращаемые данные:

  • возвращает больше данных, например, полную информацию об авторе
  • возвращает меньше данных, указав, какие поля должны быть возвращены
  • возвращают больше данных, возвращая данные в нескольких форматах
  • возвращает меньше данных, фильтруя по определенным атрибутам
  • limitи page возвращать меньше данных путем реализации подкачки
  • order даже не фильтрует данные, но влияет на результаты подкачки, поэтому
Каждый из этих элементов должен был быть явно закодирован, и, хотя Ghost API предлагает больше настроек, чем многие другие API, которые я видел, они могут предложить только так много. Если я хочу «фильтровать» по атрибуту, который они не поддерживают, я должен запросить больше данных, чем мне нужно, и отфильтровать их локально. Если я хочу «включить» какую-то другую сущность, которую они не планировали, я должен сделать несколько запросов и соединить все вместе на стороне клиента.

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

Я написал этот пост, чтобы заставить себя немного покопаться в GraphQL. Возможно, это пока не очень полезно для кого-то еще, но я планирую написать небольшую серию постов, в которых подробно все рассмотрено здесь и представлены некоторые примеры. Кажется, есть довольно богатый набор инструментов для GraphQL, в том числе:

  • Какая-то IDE в браузере, чтобы поиграть с GraphQL
  • Серверные библиотеки на , и др. (Что такое серверная библиотека?)
  • Клиенты GraphQL для и (что они подразумевают под клиентом ??)
  • Различные другие (что они делают?!?)
Не говоря уже о том, что есть целая спецификация GraphQL для проверки ... 😵

Уважаемые. Бог. Хорошо, я сделал.

Я оставлю вас с парой вступительных видео. Первый, , - хороший краткий обзор, который занимает менее 15 минут.


Второй - часовой урок Евы Порчелло . Она создала отличное введение, используя API GitHub, но для этого требуется учетная запись Lynda.com. Я бы посоветовал проверить в вашей библиотеке, предоставляют ли они бесплатный доступ - мой сделал.


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

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