GraphQL
Что такое GraphQL
GraphQL – технология, которая включает в себя кроссплатформенный язык запросов от клиента к серверу, а также среду выполнения кода. Язык создали в Facebook* для работы над внутренними проектами как более продвинутую альтернативу REST API – архитектурному паттерну передачи HTTP-запросов. С 2015 года Facebook опубликовала технологию в открытый доступ, а с 2018 года технология поддерживается организацией GraphQL Foundation.
Код GraphQL работает в собственной среде выполнения – GraphQL Server. Среда выполнения выступает прокладкой между пользователем приложения и веб-сервером с базой данных. В отличие от REST API, GraphQL Server не запрашивает данные в недостаточном, либо избыточном количестве и запрашивает данные за один запрос. С помощью GraphQL Server, за один запрос можно обращаться даже к разным базам данных.
В отличие от REST API, GraphQL стандартизирован, поскольку это язык, который обладает собственной семантикой с ключевыми словами. Исходный набор команд ускоряет процесс разработки. Разработчики пользовательской и клиентской части не будут тратить время на согласования и разработку новых конечных точек запросов, как в случае с REST API. После формирования схемы запросов бекэнд-разработчиками, фронтенд-разработчики могут создавать необходимые запросы самостоятельно. Благодаря стандартизации, GraphQL существенно ускоряет разработку и поддержку крупных проектов, таких как Facebook*.
GraphQL поддерживает автогенерацию документов. Несмотря на то, что код стандартизирован, некоторые данные нужно дополнять, либо менять, как и в REST API. Автогенерация документов позволяет быстрее погружать в проект новых разработчиков, а также облегчает выполнение задач текущей команде.
Подобно REST API, GraphQL поддерживает WebSocket – относительно молодой протокол связи, который является более продвинутой технологией в сравнении с HTTP-запросами.
Где применяют GraphQL
GraphQL применяется в разработке сайтов, а также мобильных и десктопных приложений с серверной частью. Технология поддерживает интеграцию с большим набором языков программирования, а также инструментов, пригодных для разработки под различные платформы. Список доступных интеграций, а также пакетов-расширений и утилит для GraphQL можно изучить на официальном сайте: graphql.org/code/.
Преимущества использования GraphQL в разработке
- популярность в русскоязычном сегменте;
- экономия времени за счет стандартизации кода и оптимизации процессов, от чего разработка становится быстрее и дешевле;
- защита от неполной выборки и излишней выборки, в отличие от REST API;
- автоматическая генерация вспомогательной документации параллельно разработке;
- возможность постепенного внедрения в проект, для частичного использования и плавного перехода на технологию;
- поддержка протокола WebSocket.
Недостатки использования GraphQL в разработке
- в высоконагруженных проектах GraphQL может немного уменьшать скорость ответа сервера из-за маппинга данных;
- в небольших проектах GraphQL будет избыточным – проще разработать запросы на REST API.
Примеры использования GraphQL
Список известных компаний, которые используют GraphQL, можно посмотреть на официальном сайте: graphql.org/users/.