Please enable JavaScript.
Coggle requires JavaScript to display documents.
GraphQL Schema, Вводная часть, Как работает, Флоу - Coggle Diagram
GraphQL
Schema
схема - которая декларирует возможности
что можно запрашивать и как
Типы - описывают модели и их взаимосвязи
Простые типы, скаляры
которые крепятся к полям
составных типов
есть всего пять стандартных типов
id - просто указывает что это айди
int 32 bit signed
float double signed
string - utf-8
bool true false
но можно делать и свои типы
например какие то даты время и прочее
для этого по факту надо описать как оно будет каститься
сериализоваться, десериализоваться и валидироваться
enum типы
составные типы представляющие сущности
Интерфейсы
указать обязательные поля для типов
указать в качестве возвращаемого типа
Union Types
позволяют выводить разные типы, в одном списке
указывать какие поля выводить для какого типа
Аргументы
могут передаваться как в корневой тип
таки во вложенный тип
или даже в простое поле
Input Type
аргументы можно объединять в специальные типы
Директивы
применяются когда нужно динамически
влиять на форму и структуру запроса и ответа
например условно скрывать или показывать какие то поля
из коробки есть всего две директивы, которые должны
поддерживать все реализации GraphQL
однако можно делать и свои директивы
т.е директивы применяются тогда когда нужно указать серверу логику как и что запросить, широко применяются в lighthouse
Запросы
запрашивают данные из бд
Алиасы
когда несколько запросов,
они позволяют ответ в свой ключ положить
что бы не запутаться
Фрагменты
позволяет указать сет получаемых полей
который можно везде вставлять потом
Переменные
позволяют подставлять переменные в запрос
Мутации
изменяют данные
Подписки
уведомляют об изменении данных
Вводная часть
плюсы и минусы
меньше количество запросов
можно запрашивать только то что нужно
и соответствено получать только то что нужно
возможность строить запросы с вложенностями
документация на основе схемы
можно за один раз сделать несколько запросов
для фронтендера понятны связи между элементами
что такое graphql
это не БД
это стандарт общения между фронтом и бэком
может быть реализована на любом языке
можно готовыми либами, можно хоть самому написать
Как работает
и серверная реализация
которая исполняет эти запросы
Требования к серверу
все очень гибко, нигде не прописано по какому протоколу все должно работать, не говоря уж о чем то более узком
всвязи с чем, теоретически можно делать что угодно
Ресолвинг
обработка запроса идет от коневых элементов к дочерним и далее к их простым свойствам
реализация сервера должна поддерживать написание кастомной логики ресолверов
Порядок
определить схему
что на входе
что на выходе
выполнить запрос
парсинг запроса
валидация на входе, валидация на выходе, если кто то криво передает или возвращает данные - расстрел
обход дерева запроса, ресолвинг с помощью функций которые пишет бэкендер
проблемы
N+1
GQL + Laravel
проблемы
N + 1
корневые ресолверы
валидация
Флоу
что такое gql
откуда он взялся
зачем его использовать
плюсы и минусы
как работает в общих чертах
типы запросов
запросы
мутации
подписки
о строгой типизации
простые типы
енум
кастомные типы
кастомные скаляры
аргументы и директывы
аргументы
директивы
input type
интерфейсы и объединение
интерфейсы
union types
1 more item...