CodeFlow
1.15K subscribers
424 photos
10 links
Канал, посвященный программированию, новостям и статьям из мира IT 👨‍💻

Бесплатный бот с нейросетями 🤖 @GPT4_premiumbot
Download Telegram
Типы GraphQL

В GraphQL строгая типизация полей — каждое поле в GraphQL-схеме должно принадлежать одному из следующих типов:

Скалярные типы: Int, Float, String, Boolean, ID;

Кастомные скалярные типы: например, Date, DateTime;

Enum;

Сложные типы: Object, Interface, Union, Input;

Скалярные типы

GraphQL предоставляет набор встроенных скалярных типов:

Int — целое число со знаком (32-битное);

Float — число с плавающей точкой двойной точности со знаком;

String — последовательность символов в UTF-8 кодировке;

Boolean — логический тип (true или false);

ID — скалярный тип для уникальных идентификаторов, часто используется для повторного получения объекта или в качестве ключа для кеша.

Кастомные скалярные типы

В большинстве библиотек для работы с GraphQL есть возможность задать собственный скалярный тип.

Например, можно определить тип Date (в схеме он будет объявлен как scalarDate) и добавить текстовое описание, что в этом поле ожидается дата в формате «DD.MM.YYYY».
👍2👏21🔥1
Enum

GraphQL поддерживает перечисляемые типы — Enum.

Допустим, мы хотим описать в схеме все значения статуса заказа, чтобы клиент и сервер всегда понимали, какие значения статусов могут быть отправлены.

Object

Базовый компонент GraphQL схемы — это тип Object. Он представляет собой объект, который можно получить из сервиса. Внутри объекта хранятся поля и их значения. Поля могут быть скалярными, enum, ссылаться на другие объекты или иметь тип Union или Interface.

Interface

Если в нескольких объектах есть общие поля, которые возвращают одни и те же данные — их можно выделить в интерфейс.

Например, нам нужно описать в схеме 2 разных вида продуктов: съедобные (food) и несъедобные (non-food). У каждого вида есть характеристики.

Union

Если типы мало совместимы между собой, но всё же нужно вернуть сразу несколько объектов из разных типов, то можно использовать объединения - Union.

Допустим, у пользователя есть возможность добавить в заказ не только товары, но и услуги — например, доставку или сборку.
👍2🔥21👏1
Input

Если нужно объединить в какую-то сложную структуру входные параметры - используется Input.

По структуре и схеме Input очень похож на объект.

Списки в GraphQL

Списки могут реализовываться через массивы и соединения (Connection). Рассмотрим, чем отличаются два этих способа и в каких случаях используются.

Массивы

Мы уже упоминали, что квадратные скобки [] у типа указывают на то, что поле возвращает список значений.

Connection

Этот паттерн основан на спецификации Relay и предоставляет стандартный способ работы со списками объектов. Для объекта, по которому мы хотим предоставлять соединение, создаются дополнительные объекты, которые содержат поля для пагинации и метаинформацию.

Операции GraphQL

Помимо типов, схема определяет все возможные операции, доступные в GraphQL:

Query — получение данных;

Mutation — изменение данных;

Subscription — подписки на real-time обновления.
5👍3🔥2👏1