انتقل إلى المحتوى

إنشاء بيانات استبطان JSON من GraphQL — Numio

يحوّل GraphQL SDL إلى نتيجة JSON لاستعلام استبطان (introspection) قياسي باستخدام @graphql-codegen/introspection. تحتوي المخرجات على كائن __schema في المستوى الأعلى يضم الأنواع الجذرية وكل الأنواع بما فيها المدمجة، والتوجيهات (directives).

إنتاج schema.json للأدوات التي تتوقع JSON الاستبطان بدلًا من SDL، مثل بعض إضافات IDE ومولّدات العملاء.

GraphQL Schema

Introspection JSON

متى تستخدمها

  • إنتاج schema.json للأدوات التي تتوقع JSON الاستبطان بدلًا من SDL، مثل بعض إضافات IDE ومولّدات العملاء.
  • فحص كيفية تغليف نوع الحقل في أنواع 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 من خادمك أولًا ثم الصقه هنا.

هل تُضمَّن الحقول المُهملة (deprecated)؟

نعم. يُدرج كل حقل وكل قيمة enum مع isDeprecated وdeprecationReason، لذا تظهر الحقول الموسومة بـ @deprecated مع isDeprecated: true.

لماذا المخرجات كبيرة جدًا لمخطط صغير؟

تصف نتائج الاستبطان نظام الأنواع بأكمله، بما في ذلك الأنواع العددية المدمجة وأنواع الاستبطان الوصفية وتعريفات التوجيهات، وليس أنواعك فقط.

المواصفات والمراجع