Конвертировать JSON в Schema GraphQL Онлайн
Автоматически генерируйте GraphQL-схемы из JSON прямо в браузере.
Для чего это нужно
JSON в GraphQL-схему
Совместим с Apollo Server
Схема готова к использованию в Apollo Server, GraphQL Yoga, Pothos, Nexus или любой реализации GraphQL.
100% приватно
Ваш JSON из API обрабатывается только в вашем браузере. Чувствительные структуры данных не покидают устройство.
Корректные типы
Определяет String, Int, Float, Boolean, ID. Вложенные объекты генерируют собственные типы. Массивы как списки [Type].
Мгновенно
GraphQL-схема готова за миллисекунды. Никакой регистрации, ожидания и ограничений.
Как это работает
Три шага — никаких сложностей
Вставьте ваш JSON
Вставьте любой JSON-объект. Инструмент анализирует структуру и генерирует соответствующие GraphQL-типы.
GraphQL-схема сгенерирована
Вы получаете GraphQL-типы со всеми корректно типизированными полями: String, Int, Float, Boolean и ID. Вложенные объекты генерируют собственные типы.
Скопируйте и используйте в Apollo Server
Скопируйте схему и вставьте в ваш GraphQL-сервер (Apollo Server, GraphQL Yoga, Pothos) в качестве отправной точки.
FAQ
Остались вопросы?
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.