Перейти к содержимому

Генератор JSON интроспекции GraphQL — Numio

Преобразует GraphQL SDL в JSON-результат стандартного запроса интроспекции с помощью @graphql-codegen/introspection. Вывод содержит объект __schema верхнего уровня с корневыми типами, всеми типами, включая встроенные, и директивами.

Получить schema.json для инструментов, которые ожидают JSON интроспекции, а не SDL, например некоторых плагинов IDE и генераторов клиентов.

GraphQL Schema

Introspection JSON

Когда пригодится

  • Получить schema.json для инструментов, которые ожидают JSON интроспекции, а не SDL, например некоторых плагинов IDE и генераторов клиентов.
  • Посмотреть, как тип поля оборачивается в kind NON_NULL и LIST в данных интроспекции.

Как пользоваться

  1. Вставьте SDL схемы в редактор GraphQL Schema.
  2. Дождитесь JSON в панели Introspection JSON; даже схема с одним полем даёт около тысячи строк.
  3. Скопируйте или скачайте JSON и сохраните его, например, как schema.json.

GraphQL-схема

type Query {
  hello(name: String): String!
}

JSON интроспекции

{
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": null,
    "subscriptionType": null,
    "types": [
      {
        "kind": "OBJECT",
        "name": "Query",
        "description": null,
        "fields": [
          {
            "name": "hello",
            "description": null,
            "args": [
              {
                "name": "name",
                "description": null,
                "type": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
…

Подробности и ограничения

Встроенные скаляры (String, Boolean), типы интроспекции (__Schema, __Type, __Field и другие) и встроенные директивы (include, skip, deprecated, specifiedBy) включаются всегда.

JSON не обёрнут в ключ "data"; он начинается сразу с __schema.

Преобразование выполняется в Web Worker в браузере. Страница принимает только схему и не обращается к работающему эндпоинту.

FAQ

Можно ли получить JSON интроспекции по URL?

Нет. Страница преобразует вставленный SDL и не отправляет запросы интроспекции на сервер. Сначала экспортируйте SDL со своего сервера, затем вставьте его сюда.

Включаются ли устаревшие поля?

Да. Каждое поле и значение enum перечисляется с isDeprecated и deprecationReason, поэтому поля с @deprecated выводятся с isDeprecated: true.

Почему вывод такой большой для маленькой схемы?

Результат интроспекции описывает всю систему типов, включая встроенные скаляры, метатипы интроспекции и определения директив, а не только ваши типы.

Спецификации и справка