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