Какие знаешь виды сущностей GraphQL схемы

«Какие знаешь виды сущностей GraphQL схемы» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

GraphQL схема включает несколько основных сущностей:

  1. Типы (Types) – базовые строительные блоки. Например, объектные типы (type User { id: ID! name: String }), скаляры (String, Int, ID), перечисления (enum Role { ADMIN USER }).

  2. Интерфейсы (Interfaces) – абстрактные типы, определяющие набор полей, которые должны реализовывать другие типы (interface Node { id: ID! }).

  3. Юнионы (Unions) – объединяют несколько типов (union SearchResult = User | Post).

  4. Запросы (Queries) – операции для получения данных (type Query { user(id: ID!): User }).

  5. Мутации (Mutations) – операции для изменения данных (type Mutation { createUser(name: String!): User }).

  6. Подписки (Subscriptions) – для реальных обновлений (type Subscription { newMessage: Message }).

  7. Директивы (Directives) – аннотации для изменения поведения полей (@skip(if: Boolean)).

Пример:

type Query {
  getUser(id: ID!): User
}

type User implements Node {
  id: ID!
  name: String!
  posts: [Post!]!
}

interface Node {
  id: ID!
}