с 2004 года
разработчики №1 в Тюмени
Разработка

Единый endpoint для любого типа данных

Использование связки GraphQL + Django
06.06.2024
Единый endpoint для любого типа данных

Использование связки GraphQL + Django

Срок реализации – 60 дней.

Задача

Разработка MVP проекта для недвижимости с применением GraphQL

Стэк

Apollo GraphQL + Django

Решение

Apollo GraphQL

Классический REST API подразумевает под собой большое количество endpoint’ов, на которых мы запрашиваем те или иные данные (get_user, get_list_user, get_object и т.д.). Приходится постоянно общаться с backend’ом на предмет понимания - какую структуру запросить, post, get, и т.п.
Технология GraphQL сокращает всю эту бюрократию до одного запроса (вернее, двух): query (получение) и mutation (изменение). Парадигма работы с данными на фронте ломается полностью. Теперь на все имеющиеся вопросы есть только одно место, куда нужно обращаться за всеми данными. К запросу необходимо только добавить поля, которые ожидаются в ответе.
По признанию наших программистов, такой подход первые пару недель вызывал большое отторжение из-за своей нестандартности. Казалось, что это неудобно - в каждом компоненте на фронте нужно описывать список полей и сущностей, чтобы получить эти данные. Однако позднее удалось выявить пару библиотек, чтобы забирать с бэка схему данных в typescript. После подключения IDE теперь сама подсказывала, что можно запросить и получить, и необходимость знать наизусть структуру данных в бэке отпала.
При всей кажущейся сложности, Apollo-клиент позволяет широко пользоваться его преимуществами. Во-первых, кешировать данные: если они не обновились на сервере, он покажет уже сохраненную версию и не будет выполнять лишний запрос на бэкенд. Во-вторых, в рамках функционального программирования можно очень просто эти данные получать. Нет необходимости организовывать отдельный store для actions и reducers (как ранее в react/redux). С помощью apollo-клиента с описанным запросом в компоненте можно указать необходимость подставить данные во view - и вуаля.
Мы предполагаем, что не столь широкое применение GraphQL в отрасли может быть связано с повышенным порогом входа в этот язык, а также нюансами с обеспечением безопасности. Теоретически, при неверной организации политики безопасности, злоумышленник может получить от бэкенда всю структуру данных проекта буквально одним запросом. Дальнейшая практика покажет еще не изученные нами возможности GraphQL. Сейчас появилось множество инструментов для облегчения работы в такой связке бэка и фронта.
← Все статьи
Отвечаем со скоростью света sales@crtweb.ru
свяжитесь с нами
© CRT 2004–2026
Made in Tyumen
Аккредитованная ИТ компания
Запись № 7668 от 10.10.2017 г.
К сайту подключен сервис веб-аналитики Яндекс Метрика, использующий cookie-файлы для анализа пользовательской активности. Вы даете согласие на обработку персональных данных с помощью этого сервиса в порядке, указанном в Политике конфиденциальности
Хорошо