استخراج أسماء متغيرات GraphQL وأنواعها
تقرأ هذه الأداة مستند GraphQL قابلاً للتنفيذ، وتتحقق من صحة بنيته، ثم تسرد المتغيرات المعلنة في كل استعلام أو تعديل أو اشتراك.
شغّل الأداة مجانًا
تحافظ النتيجة على نوع العملية واسمها الاختياري، وعلى اسم كل متغير وصيغة نوعه الدقيقة، بما في ذلك القوائم وعلامات القيم غير الفارغة. ويمكنكم استخدامها لإنشاء نماذج الإدخال، ومراجعة عمليات العميل، وتوثيق عمليات التكامل، أو فحص نص الاستعلام قبل تنفيذه.
ميّزوا بين التصريحات والاستخدامات
تظهر متغيرات GraphQL في موضعين مختلفين: تصريح مثل <code>$id: ID!</code> بجوار اسم العملية، واستخدام مثل <code>user(id: $id)</code> داخل مجموعة الاختيار. تعرض هذه الإمكانية التصريحات فقط، وتجمعها تحت الاستعلام أو التعديل أو الاشتراك الذي يملكها، ولذلك يمكن لعمليتين التصريح بالاسم نفسه من دون دمجهما. وتبقى صيغة النوع المهمة كما هي، مثل <code>String</code> و<code>ID!</code> و<code>[ID!]!</code>. تُحلل القيم الافتراضية والتوجيهات لإثبات سلامة البنية، لكنها لا تظهر في الناتج. كما تُفحص الأجزاء، لكنها لا تنشئ سجلات لأنها لا تصرح بمتغيرات العمليات. ويظهر الاستعلام المختصر المجهول كعملية استعلام بلا اسم وبقائمة متغيرات فارغة.
تحققوا من البنية بطريقة حتمية
لا يكون الاستخراج بالتعبير النمطي موثوقاً عند وجود التعليقات أو السلاسل النصية أو النصوص الكتلية أو القوائم المتداخلة أو الكائنات الافتراضية أو التوجيهات أو الأجزاء أو الأسماء البديلة أو العمليات المتعددة. يحول هذا المحلل المستند كاملاً إلى رموز ويتبع قواعد مستندات GraphQL التنفيذية. ويرفض السلاسل غير المغلقة، والأرقام غير الصحيحة، والمحارف غير المتوقعة، ومجموعات الاختيار الفارغة، والتعريفات الناقصة. لذلك تصلح النتيجة فحصاً مبكراً في عملية البناء. لا تُستخدم الشبكة ولا يُطلب مخطط. ومن ثم لا تحدد الأداة وجود حقل على خادمكم، أو توافق نوع متغير مع وسيط، أو تحقق القواعد المرتبطة بالمخطط. استخدموها لفحص البنية واكتشاف التصريحات، ثم أجروا تحققاً مستقلاً بالمخطط عند توفره.
ادمجوا النتيجة المنظمة في أدواتكم
تحتوي الاستجابة على المصفوفة <code>operations</code> بترتيب المستند، وعلى الإجمالي <code>variable_count</code>. تحدد كل عملية نوعها، وتضم اسمها إن كان مكتوباً، وتحتوي على مصفوفة <code>variables</code> ذات سجلات <code>name</code> و<code>type</code>. يناسب هذا الشكل الثابت إنشاء محررات الإدخال، ومقارنة العمليات المحفوظة، وإعداد جداول التوثيق، واكتشاف مدخل إلزامي جديد. ويمنع فصل العمليات التعارضات الوهمية بين الأسماء المتكررة. يقتصر الإدخال على 200,000 محرف لضبط المعالجة. لا يُنفذ أي استعلام، ولا يلزم مخطط أو ترويسات أو بيانات اعتماد أو قيم تشغيل. يمكنكم لصق المستند في المتصفح أو استدعاء API مقابل $0.002 لكل عنصر. وعند وجود خطأ، تعرض الاستجابة موضعه التقريبي.
حالات الاستخدام
إنشاء نموذج للمتغيرات
اقرؤوا التصريحات وأنشئوا المدخلات الصحيحة قبل جمع قيم وقت التشغيل.
مراجعة الاستعلامات المحفوظة
قارنوا أسماء GraphQL وأنواعها الدقيقة عند تغيير عملية خاضعة لإدارة الإصدارات.
توثيق عمليات العميل
حوّلوا مستنداً متعدد العمليات إلى قائمة موجزة مجمعة حسب نوع العملية.
الأسئلة الشائعة
هل تنفذ الأداة استعلام GraphQL؟
لا. تحلل المستند محلياً ولا تتصل مطلقاً بنقطة نهاية GraphQL.
هل تشمل النتيجة استخدامات المتغيرات؟
لا. تُعرض التصريحات فقط، ولا تُعد الإشارات داخل الحقول أو الوسائط تصريحات جديدة.
هل تبقى علامات القوائم والقيم غير الفارغة؟
نعم. تحتفظ أنواع مثل ID! و[String!] و[ID!]! بصيغة GraphQL الكاملة.
هل تُتحقق الحقول وفق مخططي؟
لا. يُفحص التركيب من دون مخطط؛ ويتطلب وجود الحقول وتوافق الأنواع خطوة مستقلة.
هل يمكن أن يضم المستند عمليات وأجزاء متعددة؟
نعم. تُعرض العمليات بالترتيب، وتُفحص الأجزاء الصحيحة من دون إضافة تصريحات.
ما تكلفة استدعاء API؟
يكلف كل عنصر $0.002. ويشغل إصدار الويب المحلل نفسه محلياً.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/graphql-query-variables-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}'const res = await fetch("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/graphql-query-variables-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/graphql-query-variables-extract", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 200000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |