Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Дмитрий Соболев. GraphQL в проекте на Python

Дмитрий Соболев. GraphQL в проекте на Python

Когда мы начинали новый проект, передо мной встал вопрос: какой технологический стек использовать? Обычно используют то, что знают хорошо или хотя бы неплохо, чтобы во время выполнения проекта не возникло внезапных сюрпризов. Но с другой стороны новый проект — это возможность попробовать что-то новое и интересное. Размышляя так, я протащил в этот проект GraphQL. Знал я про него тогда немного, но прошло время, и в этом докладе я бы хотел подвести некий промежуточный итог: стоит или нет использовать эту технологию, её плюсы и минусы, а также некоторые подводные подводные камни, на которые я наткнулся в ходе работы.

Python Community Chelyabinsk

December 05, 2019
Tweet

More Decks by Python Community Chelyabinsk

Other Decks in Programming

Transcript

  1. 2019 • Очевидно, язык запросов • Не связан с источниками

    данных • Типизированный • Позволяет получить только то, что нужно и не больше.
  2. 2019 Что мы запрашиваем? • может быть больше одного поля

    в запросе • можно передать аргументы
  3. 2019 Что мы хотим получить? • По аналогии с корневым

    запросом, можно получить смежные данные
  4. 2019 Типы запросов • query получение данных все поля выполняются

    параллельно • mutation изменение данных поля выполняются по порядку • subscription получение обновлений в реальном времени
  5. 2019 Проблема N+1. Что делать? • Ничего. • Каким-то образом

    попытаться вытащить объекты второго уровня пачкой. • Сделать умный query-builder, который подгружает смежные данные.
  6. 2019 Загрузка файлов 1. Предварительная загрузка файла на кеширующий сервер

    2. Кодирование содержимого в base64 3. https://github.com/jaydenseric/graphql-multipart-request-spec
  7. 2019 • Неплохая замена swagger • Не нужен, если уже

    есть настроенный и хорошо работающий swagger • Хорошее решение для API Gateway
  8. 2019 Ссылки • https://graphql.org/learn/ • https://graphql.github.io/graphql-spec/June2018 • https://graphql.org • https://graphene-python.org/

    • https://tartiflette.io/ • https://github.com/jaydenseric/graphql-multipart-request-spec/ • https://github.com/dmitry-sobolev/graphql-meetup/