ДокументыИзображенияМедиаИнструменты PDF

Конвертировать JSON в Schema GraphQL Онлайн

Автоматически генерируйте GraphQL-схемы из JSON прямо в браузере.

Processed in your browser

JSON в GraphQL-схему

Совместим с Apollo Server

Схема готова к использованию в Apollo Server, GraphQL Yoga, Pothos, Nexus или любой реализации GraphQL.

100% приватно

Ваш JSON из API обрабатывается только в вашем браузере. Чувствительные структуры данных не покидают устройство.

Корректные типы

Определяет String, Int, Float, Boolean, ID. Вложенные объекты генерируют собственные типы. Массивы как списки [Type].

Мгновенно

GraphQL-схема готова за миллисекунды. Никакой регистрации, ожидания и ограничений.

Три шага — никаких сложностей

1

Вставьте ваш JSON

Вставьте любой JSON-объект. Инструмент анализирует структуру и генерирует соответствующие GraphQL-типы.

2

GraphQL-схема сгенерирована

Вы получаете GraphQL-типы со всеми корректно типизированными полями: String, Int, Float, Boolean и ID. Вложенные объекты генерируют собственные типы.

3

Скопируйте и используйте в Apollo Server

Скопируйте схему и вставьте в ваш GraphQL-сервер (Apollo Server, GraphQL Yoga, Pothos) в качестве отправной точки.

Остались вопросы?

GraphQL — язык запросов для API, разработанный Facebook (ныне Meta) в 2012 году для внутреннего использования и опубликованный как open-source спецификация в 2015 году. Он был создан для решения ограничений REST в мобильных приложениях: over-fetching (получение лишних данных), under-fetching (необходимость нескольких запросов) и отсутствие типизированного контракта. Сегодня GraphQL используют GitHub, Twitter, Shopify, Airbnb, Pinterest и тысячи компаний.

В GraphQL type определяет структуру данных, которые сервер может возвращать (в запросах и мутациях), а input определяет структуру данных, которые клиент может отправлять (аргументы мутаций). Например, type User { id: ID!, name: String! } определяет возвращаемый объект User, а input CreateUserInput { name: String!, email: String! } определяет поля, принимаемые мутацией createUser. Данный инструмент генерирует types для моделирования существующих JSON-ответов.

GraphQL определяет 5 примитивных скалярных типов в спецификации: String (текст UTF-8), Int (знаковое 32-битное целое), Float (десятичное число двойной точности), Boolean (true/false) и ID (уникальный идентификатор, представленный как String или Int). Серверы GraphQL могут определять дополнительные пользовательские скаляры: Date, DateTime, URL, Email, JSON, UUID и др. Данный инструмент использует 5 стандартных скаляров для максимальной совместимости.

В GraphQL каждый вложенный объект в JSON становится отдельным типом. Если JSON содержит {"order": {"product": {"id": 1, "name": "Widget"}}}, генерируется: type RootType { order: Order }, type Order { product: Product }, type Product { id: Int, name: String }. Это отражает природу GraphQL-схемы: все типы именованы и многократно используемы. Массивы объектов представляются как [Product] (список Product).

Resolver — функция, знающая, как получить данные для конкретного поля схемы. В Apollo Server у каждого поля каждого типа может быть свой resolver. Если resolver не определён, Apollo использует DefaultFieldResolver, который просто возвращает свойство с тем же именем из родительского объекта. Resolvers позволяют получать данные из нескольких источников: базы данных, другого API, кэша или вычисления в реальном времени.

Внедрение GraphQL, Apollo Server, schema-first vs code-first и миграция с REST на GraphQL

GraphQL был открыт Facebook в июле 2015 года и быстро породил живую экосистему. Apollo GraphQL (основан в 2016 году) создал Apollo Server и Apollo Client, став эталонной реализацией. В 2018 году GitHub перевёл своё публичное API с REST v3 на GraphQL v4 — событие, подтвердившее GraphQL для крупномасштабных API. GraphQL Foundation была создана в 2019 году под эгидой Linux Foundation для стандартизации спецификации.

Существует два основных подхода к созданию GraphQL API: schema-first и code-first. В schema-first сначала определяется SDL-схема (Schema Definition Language), затем реализуются resolvers. Это оригинальный и наиболее прозрачный подход: API-контракт виден и редактируем как текст. В code-first схема определяется через код (TypeScript в случае Nexus или Pothos), а SDL-схема генерируется автоматически. Code-first предпочтителен при необходимости сквозной типобезопасности с TypeScript. Данный инструмент генерирует SDL (schema-first).

Миграция с REST на GraphQL — постепенный процесс, который многие компании осуществляют с помощью паттерна BFF (Backend For Frontend): вместо замены существующих REST API добавляется GraphQL-слой, агрегирующий несколько REST-эндпоинтов. Этот паттерн, популяризованный Netflix и Airbnb, позволяет инкрементально внедрять GraphQL без нарушения работы существующих сервисов. GraphQL Federation (Apollo) идёт дальше: позволяет компоновать несколько GraphQL-сервисов в единый граф — архитектуру supergraph.