Используйте старую версию как базу
Оценка идёт от действующей схемы к новой. Если поменять стороны местами, удаление станет добавлением и классификация пересчитается; сначала убедитесь в правильной последовательности.
Документы GraphQL
Слева вставьте полную действующую схему SDL, справа — предлагаемую. Направление определяет риск удаления и добавления.
Введите две полные схемы SDL или загрузите пример.
Оба текста SDL разбираются в этом браузере. Без API-запросов, загрузки на сервер, сохранения истории и передачи ввода через URL.
GraphQL.js определяет критические и потенциально опасные изменения. Остальные структурные различия и отметки устаревания показаны отдельно, без обещания безопасности.
Для каждого SDL: до 100 000 символов, 20 000 токенов и 100 уровней вложенности. Через 8 секунд сравнение останавливается.
Введите две полные схемы SDL или загрузите пример.
Сравнение схем GraphQL помогает при ревью, когда текстовый diff заполнен перестановкой объявлений и пробелами. Клиентам важнее, сохранились ли типы, поля и аргументы, на которые опираются запросы.
В отчёте отдельно показаны структурные различия и правила совместимости. Новые поля или метки @deprecated остаются в списке, даже если GraphQL.js не относит их к критическим: отсутствие срабатывания не доказывает безопасность.
Смотрите на изменения контракта, а не на перестановку строк.
Сравнение схем GraphQL строит обе схемы из SDL и сопоставляет типы, поля и аргументы по именованным путям. Изменённый порядок объявлений не создаёт ложного отличия, а удалённое поле видно вместе со старым типом.
Новое значение enum может нарушить логику клиента с полным перебором вариантов. Метка @deprecated не удаляет поле. Сравнение схем GraphQL показывает эти события отдельно и не называет остальные структурные изменения безопасными.
Оценка идёт от действующей схемы к новой. Если поменять стороны местами, удаление станет добавлением и классификация пересчитается; сначала убедитесь в правильной последовательности.
По умолчанию сравнение начинается после паузы около 350 мс. Для большого SDL выключите автоматику и запустите сравнение кнопкой или Ctrl/Cmd+Enter, когда обе версии готовы.
После любого редактирования прежний отчёт устаревает, копирование и скачивание блокируются. Исправьте ошибку на указанной стороне, по строке и столбцу, затем повторите запуск. Файл содержит все записи, даже если экран показывает их по 100.
Сопоставляются типы, поля, аргументы, входные поля, enum, union и директивы. Пробелы и порядок определений не считаются изменением API.
Библиотека назначает категории критического и потенциально опасного изменения. Код правила виден рядом; другие структурные отличия не получают необоснованной отметки «безопасно». Критические изменения отделены от потенциального риска.
Новая или изменённая причина @deprecated записывается отдельно. Удаление ранее устаревшего поля всё равно остаётся критическим по стандартным правилам.
Если обязательный аргумент мутации сделать nullable, набор допустимых входных значений обычно расширится. GraphQL.js не считает это направление критическим; обратное изменение может сломать старые вызовы без аргумента.
Новое значение enum считается потенциально опасным: старый запрос остаётся допустимым, но клиент с исчерпывающей обработкой значений может не распознать новый вариант.
Две SDL-схемы не содержат намерения переименования. Сравнение схем GraphQL отдельно показывает удаление прежнего типа и добавление нового; плавный переход нужно планировать на уровне API.
Мутация — поле корневого типа Mutation, поэтому её можно пометить @deprecated. Старые операции остаются допустимыми, а фактическое удаление поля позже всё равно классифицируется как критическое.
Переход выходного поля из non-null в nullable меняет ожидания сгенерированных клиентов, и GraphQL.js помечает его критическим. Для обратного перехода также проверьте, что resolver не возвращает null.
Документ дал неожиданный результат?
Разместите старый и новый SDL рядом, изучите все категории и скачайте актуальный отчёт.