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