Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить бесплатно
Главная БлогЧто такое GraphQL и в чем его достоинства
Website,Development,,Www,Application,Coding,,Technology,Create,Online,Cyberspace,Software

Что такое GraphQL и в чем его достоинства

Дата публикации: 06.05.2022
5 722
Время чтения: 13 минут
Дата обновления: 30.10.2023
В статье рассказывается:

В статье рассказывается:

  1. Особенности GraphQL
  2. Основные достоинства языка
  3. Ситуации, когда может пригодиться GraphQL
  4. Часто задаваемые вопросы про GraphQL
  5. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

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

Graphql – это эффективная альтернатива REST, более «продвинутый» язык для разработки программных интерфейсов приложений. И, надо сказать, со своими задачами он справляется очень хорошо.

Особенности GraphQL

Прежде чем рассматривать особенности, разберемся, что такое GraphQL. Данный язык программирования создали разработчики Facebook в 2012 году. Изначально GraphQL разрабатывался для внутренних нужд компании. Тремя годами позже анонсировался его выпуск в открытый доступ. Начиная с 7 ноября 2018 года работа над языком ведется компанией GraphQL Foundation. Особенно популярным среди программистов язык стал после получения статуса open source.

Особенности GraphQL
Особенности GraphQL

Подавляющее большинство интернет-пользователей знает о существовании Facebook. Многим также знакомы такие сервисы, как Airbnb, GitHub, Pinterest и Shopify. Все эти продукты разрабатывались средствами GraphQL.

Этот язык запросов предназначен для работы с базами данных и для доступа к этим данным приложениями на стороне клиента. Ключевым понятием GraphQL является схема — особая сущность, позволяющая управлять БД. Клиентское приложение благодаря этому может создавать, считывать, обновлять и удалять данные. Таким образом, обеспечиваются 4 главные функции для работы с БД, обозначаемые как CRUD (create, read, update, delete).

Особенностью GraphQL можно назвать независимость от источников данных. Вся работа организуется внутри определенного приложения, а не в БД. При этом не имеет значения, где фактически хранятся данные.

Использование слова «Graph» в названии этого языка способно запутать новичков, не знакомых с программированием на данном языке. Может показаться, что здесь потребуется работа с графовыми БД. Вторая часть названия — QL — расшифровывается как «query language» («язык запросов»). Значит ли это, что мы имеем дело с абсолютно новым языком программирования?

Новичкам тут особо беспокоиться не о чем. В реализованной технологии лишь улучшены GET и POST запросы. Сам GraphQL предлагает некоторые новые концепции, связанные с организацией данных и с взаимодействием с этими данными. Но несмотря на такой новаторский подход язык работает с классическими HTTP-запросами.

Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 31988 pdf иконка

Все запросы в этом языке могут относиться к двум группам. Первая группа включает в себя запросы на чтение данных (reading). С точки зрения терминологии GraphQL они называются просто query. Запросы из второй группы изменяют данные — создают, обновляют или удаляют их (соответственно, create, update и delete). В структуре языка GraphQL это так называемые «мутации» (mutations).

Обе разновидности запросов передаются на URL сервера GraphQL в виде GET или POST.

Основные достоинства языка

Высокая точность выборки

Польза максимально точной выборки данных очевидна каждому разработчику. Средства GraphQL позволяют путем отправки запроса в API получать именно тот набор, который необходим в данный момент. По сравнению с традиционным шаблоном REST здесь предлагается в значительной мере улучшенная, но при этом простая и точная функция.

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

Высокая точность выборки
Высокая точность выборки

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

Структурную схему работы GraphQL с выборками можно представить так. Сервер предоставляет только одну конечную точку по конкретному пользовательскому запросу, а не множество таких точек, возвращающих фиксированные наборы данных.

На один запрос множественная выборка

Данная особенность языка следует из указанной выше схемы. Так как предоставляется лишь единичная конечная точка, данные извлекаются сервером по декларативной схеме. То есть, всю необходимую информацию из БД можно получить одним единственным запросом.

Например, требуются сведения о музыкальной группе — ее название, идентификатор в базе и названия композиций. Традиционным способом нужно было бы отправить минимум 2 запроса соответственно к двум точкам — /artists и /tracks. GraphQL же предлагает реализовать это одной мощной функцией. Эффективность этой возможности сложно переоценить, особенно в рамках работы с декларативными структурами API.

Депрекация на уровне поля

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

Рассмотрим это на примере. Допустим, имеется API с адресом api.domain.com/resources/1. Предполагается, что в ближайшее время в структуре ресурсов произойдут изменения. Значит, необходима версия API, которая в таком случае зафиксируется по адресу api.domain.com/resources/2.

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

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

Итак, вместо создания новых версий API реализуется постепенная его эволюция. Сама структура этого API при этом остается неизменной.

Совместимость с современными приложениями

Создание современных приложений подразумевает комплексный подход — разрабатывается серверная часть, которая в свою очередь обменивается данными с клиентскими приложениями. Таким образом, для работы всевозможных веб-приложений, мобильных программ, смарт-устройств может потребоваться всего одно бэкенд-приложение. Такая технология позволяет наиболее эффективно использовать данные.

Совместимость с современными приложениями
Совместимость с современными приложениями

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

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

Таким образом, каждому микросервису назначается своя схема и своя конечная точка GraphQL, а затем все это объединяется в единую структуру, с которой непосредственно взаимодействует клиентская часть приложения. Объединение всех схем в одну и обеспечение доступа к клиентам осуществляется единым API-шлюзом.

Рассмотренная функция GraphQL дает возможность придерживаться современного стиля программирования. Используя GraphQL запросы для слияния нескольких схем в одну глобальную, разработчики открывают доступ к ресурсам для множества клиентских приложений.

Ситуации, когда может пригодиться GraphQL

Любая новая технология внедряется с какой-то определенной целью. И создание нового языка GraphQL — не исключение. Но ответить однозначно, для чего конкретно создавался этот язык, нельзя.

Во всяком случае простого ответа на этот вопрос не существует. Действительно, те же функции вполне способна решать уже зарекомендовавшая себя технология REST. В крайнем случае можно было бы просто напрямую взаимодействовать с базой данных. И все же постараемся сформулировать главные доводы в пользу выбора инструментов GraphQL.

  • Стремление к минимизации количества клиентских запросов

Львиную долю работы многих приложений занимает выполнение большого числа довольно сложных HTTP-запросов. Причем, выполнять их приходится очень часто. Технология GraphQL основывается на том же принципе взаимодействия через запросы. Однако при правильном использовании возможностей языка количество этих запросов с клиентской стороны значительно сокращается (вплоть до одного единственного).

Дарим скидку от 60%
на обучение «Инженер-программист» до 01 декабря
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

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

  • Отказ от денормализации данных только лишь для оптимизации работы над пользовательским интерфейсом

Так называемая ловушка денормализации часто возникает в приложениях, работающих с большими базами реляционных данных. Считается, что это вполне стандартная ситуация, хотя и далеко не идеальная. Она пагубно влияет на производительность приложений.

Ситуации, когда может пригодиться GraphQL
Ситуации, когда может пригодиться GraphQL

Использование вложенных запросов GraphQL существенно снижает необходимость в денормализации данных.

  • Наличие множества источников информации, с которыми работают несколько приложений

Частично эта задача решается традиционными средствами REST API. Однако запросы клиентской части по-прежнему остаются единообразными, что создает определенную проблему. Например, имеется крупный проект, включающий в себя несколько приложений-клиентов (в том числе мобильных) и API для разработчиков. В стандартных условиях для каждого клиента понадобилось бы создавать отдельный инструмент выполнения запросов.

Только до 25.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

В итоге это приведет к необходимости постоянной поддержки нескольких реализаций HTTP, работающих на разных платформах. А следовательно, будет иметь место запутанность конечных точек API при отсутствии единообразной структуры средств выполнения запросов.

Часто задаваемые вопросы про GraphQL

  • В чем сходство GraphQL и графовых БД?

Между ними на самом деле нет ничего общего. Может смутить приставка «Graph» в названии языка. В действительности она говорит об идее прохождения любого контента через граф API с использованием полей и подполей. Вторая часть названия (QL) отражает лишь принадлежность GraphQL к языкам запросов (query language).

  • Технологии REST вполне достаточно. Для чего тогда переходить на GraphQL?

При отсутствии болевых точек в использовании REST API задумываться о переходе на технологию GraphQL действительно не имеет смысла. Более того, внедрение функций этого языка поверх REST только лишь усложнит работу с API. Наработанный пользовательский опыт придется коренным образом перерабатывать. Использование возможностей GraphQL будет полезным только в рамках небольшой части крупного проекта.

  • Можно ли использовать GraphQL без каких-то библиотек?

Безусловно такая возможность есть. GraphQL представляет собой спецификацию, пригодную для использования с любой библиотекой. При этом работу можно вести как в готовом клиенте (например, предоставляемом Apollo для различных платформ), так и вручную, путем отправки запросов напрямую на сервер.

  • Удобно ли работать в GraphQL при недоверии к сети Facebook?

Как уже упоминалось, GraphQL — это лишь спецификация, на основе которой изначально создавалась эта соцсеть. Никто не обязывает разработчиков использовать блоки кода, написанные специалистами Facebook. Сегодня это независимый проект с достаточно обширным сообществом поддержки. Язык продолжит свое развитие, даже когда прекратится его использование в рамках Facebook.

  • Безопасно ли предлагать клиентским приложениям любые нужные им данные?

Программисты разрабатывают собственные распознаватели. Поэтому любые вопросы безопасности они также могут решать на данном уровне.

Часто задаваемые вопросы про GraphQL
Часто задаваемые вопросы про GraphQL

Например, существует параметр «limit», ответственный за предельное количество запрашиваемых клиентом документов. Если позволять клиентской стороне использовать этот параметр, необходимо также обеспечивать контроль над этим значением, чтобы избегать отказов в обслуживании при многочисленных запросах рассматриваемых документов.

  • Что необходимо для начала работы?

Обязательными являются два компонента: сервер, обрабатывающий запросы к API, и клиентская часть для подключения к конечным точкам.

Итак, мы объяснили простыми словами, что такое GraphQL. Конечно, эта технология потребует предварительного изучения, поскольку она так или иначе связана со многими сферами программирования. Важно уделить внимание концепции, чтобы принять решение, стоит использовать данный инструмент в работе или нет. На практике же все большее число представителей бизнеса переходит на GraphQL. И в ближайшее время данная технология вполне может стать одной из основных в веб-разработке.


Ищете самую востребованную и высокооплачиваемую профессию? Станьте DevOps-инженером с нуля.
Присоединяйтесь к нашему курсу, где вы освоите все необходимые навыки для работы в индустрии разработки программного обеспечения. Получите практический опыт в автоматизации процессов, контейнеризации, управлении конфигурациями. Научитесь автоматизировать процессы разработки и внедрения ПО, организовать непрерывную интеграцию и доставку (CI/CD), работать с облачными сервисами, Docker и Kubernetes. Запишись сейчас и открой двери в мир возможностей DevOps.
Оцените статью:
5
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
Читайте также
prev
next
Бесплатные вебинары:
prev
next
Как работает дизайн-студия на примере одного кейса 

Как работает дизайн-студия на примере одного кейса 

Узнать подробнее
Инновационные подходы к обучению информационным технологиям

Инновационные подходы к обучению информационным технологиям

Узнать подробнее
Как стать Python-разработчиком

Как стать Python-разработчиком

Узнать подробнее
Что нужно знать разработчику

Что нужно знать разработчику

Узнать подробнее
Кто такой тестировщик и как им стать

Кто такой тестировщик и как им стать

Узнать подробнее
Чем занимается программист и как им стать

Чем занимается программист и как им стать

Узнать подробнее
Как искусственный интеллект помогает и мешает задачам кибербезопасности

Как искусственный интеллект помогает и мешает задачам кибербезопасности

Узнать подробнее
Бесплатный вебинар про внедрение искусственного интеллекта

Бесплатный вебинар про внедрение искусственного интеллекта

Узнать подробнее
Какие есть профессии в ИТ

Какие есть профессии в ИТ

Узнать подробнее
Смените профессию,
получите новые навыки,
запустите карьеру
Поможем подобрать обучение:
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...