إذا كنت تعيش في بيئة الطرفية ولكن تجد بناء جملة curl معقدة ومخرجاتها الخام صعبة القراءة، فإن curlie يستحق المعرفة. إنه عميل HTTP صغير لسطر الأوامر يغلف curl ويستعير البناء الجملي الأكثر ودية والمخرجات الملونة من HTTPie، لذلك تحصل على استجابات قابلة للقراءة دون التخلي عن قوة curl. يشرح هذا الدليل ما هو curlie، وكيفية تثبيته واستخدامه، وكيف يرتبط بـ curl و HTTPie، ومتى تنتقل من المكالمات الطرفية المخصصة إلى سير عمل محفوظ وقابل للتكرار.
ما هو curlie في الواقع؟
curlie هو واجهة أمامية لـ curl. إنه لا يعيد تنفيذ HTTP. يقوم بتحليل أمر أبسط بأسلوب HTTPie، ويبني استدعاء curl المكافئ، ويسلم الطلب الفعلي إلى ملف curl الثنائي على جهازك. تعود النتيجة مع تمييز بناء الجملة و JSON المنسق بشكل جميل.

هذا الاختيار في التصميم مهم. نظرًا لأن curl يقوم بالشبكات، يرث curlie دعم بروتوكولات curl، ومعالجة TLS، وسلوك الوكيل، والأعلام التي تعرفها بالفعل. يمكنك تمرير أي علامة curl أصلية مباشرة. curlie يجعل الحالة الشائعة، إرسال طلب وقراءة الاستجابة، أقل إيلامًا بكثير.
يتم شحن المشروع كملف Go ثنائي واحد يتم صيانته على GitHub. لا يوجد وقت تشغيل لتثبيته، ولا بيئة Python، ولا إضافات. تضع الملف الثنائي في مسارك (PATH) وينتهي الأمر.
بشكل واضح: curlie هو عميل HTTP تفاعلي ومخصص للطرفية. تلجأ إليه عندما تريد اختبار نقطة نهاية، وفحص استجابة، ثم المضي قدمًا. إنه ليس مشغل اختبار، ولا يحاول أن يكون كذلك.
لماذا يستخدمه الناس
توجد curl في كل مكان، لكن مخرجاتها تعرض البايتات الخام على شاشتك. يصل JSON كسطر واحد غير منسق. تتداخل الرؤوس والجسم ما لم تضف علامات. عالج HTTPie مشكلة سهولة القراءة ببناء جملي نظيف ومخرجات ملونة، لكنها أداة Python منفصلة بسلوكها واعتمادياتها الخاصة.
يقع curlie بين الاثنين. تحصل على بيئة عمل HTTPie مع محرك curl في الخلفية. إليك بعض الأسباب التي تجعل المطورين يحبونه:
- قابل للقراءة افتراضيًا. تعود الاستجابات ملونة، مع JSON منسق بشكل جميل ورؤوس مفصولة بوضوح.
- بناء جملي مألوف. يستخدم إعداد الرؤوس ومعلمات الاستعلام وحقول JSON نمط HTTPie المدمج بدلاً من العلامات المتراكمة
-Hو-d. - curl في الخلفية. تعمل أي علامة curl. إذا كنت تعرف curl، فأنت تعرف بالفعل معظم curlie.
- صفر اعتماديات. ملف ثنائي ثابت واحد. لا يوجد شيء للحفاظ على تحديثه باستثناء الملف الثنائي نفسه.
- الوضع المطول يظهر استدعاء curl. قم بالتشغيل مع
-vوسترى الرؤوس والطلب الأساسي، مما يجعله أداة تعليمية جيدة أيضًا.
تثبيت curlie
يتم توزيع curlie كملف ثنائي مسبق البناء وعبر مديري الحزم الشائعين. تتغير الأوامر الدقيقة بمرور الوقت، لذا تحقق من صفحة إصدارات GitHub للطريقة الحالية، ولكن المسارات النموذجية تبدو كالتالي.
على نظام macOS باستخدام Homebrew:
brew install curlie
مع تثبيت Go:
go install github.com/rs/curlie@latest
أو قم بتنزيل الملف الثنائي لمنصتك من صفحة الإصدارات وانقله إلى مسارك (PATH):
# مثال: ضع الملف الثنائي الذي تم تنزيله في مكان ما على PATH
mv curlie /usr/local/bin/
curlie --version
تحتاج إلى توفر curl على النظام، حيث يقوم curlie باستدعائه. على نظام macOS ومعظم توزيعات Linux، يتوفر curl بالفعل.
الاستخدام الأساسي
سيبدو بناء الجملة مألوفًا إذا كنت قد استخدمت HTTPie. طلب GET قصير كعنوان URL:
curlie httpbin.org/get
يفترض curlie أنك تريد GET عندما لا تسمي طريقة، ويضيف http:// إذا حذفت المخطط. تطبع الاستجابة مع رؤوس ملونة و JSON منسق.
لإرسال JSON، استخدم أزواج key=value. يقوم curlie بتعيين الرأس Content-Type: application/json ويقوم ببناء الجسم لك:
curlie POST httpbin.org/post name=apidog role=platform
هذا يرسل {"name": "apidog", "role": "platform"} كجسم للطلب. أضف رأسًا بصيغة Header:value ومعلمة استعلام بصيغة param==value:
curlie GET httpbin.org/get \
Authorization:"Bearer token123" \
search==apidog
نظرًا لأن curl يعمل في الخلفية، يمكنك خلط العلامات الأصلية في أي وقت لا يكون فيه بناء الجملة القصير كافيًا:
curlie -v --max-time 5 httpbin.org/get
علامة -v تستحق أن تكون عادة. إنها تطبع رؤوس الطلب والاستجابة، حتى تتمكن من تأكيد ما تم إرساله بالضبط عبر الشبكة. إذا كنت ترغب في تحديث أعمق للأداة الأساسية، فإن دليل curl لاختبار REST API يغطي العلامات الخام التي يقوم curlie بتغليفها.
curlie مقابل curl مقابل HTTPie
جميع الأدوات الثلاث ترسل طلبات HTTP من الطرفية. الفرق يكمن في بناء الجملة، المخرجات، وما يعمل في الخلفية.
| الجانب | curl | HTTPie | curlie |
|---|---|---|---|
| المحرك | libcurl | بايثون (نمط requests) | curl (يغلفه) |
| بناء الجملة | كثير العلامات (-X, -H, -d) |
مدمج (key=value) |
مدمج، بأسلوب HTTPie |
| المخرجات | خام، غير منسقة | ملونة، JSON منسق بشكل جميل | ملونة، JSON منسق بشكل جميل |
| التثبيت | مثبت مسبقًا في كل مكان تقريبًا | حزمة بايثون | ملف ثنائي واحد لـ Go |
| علامات curl الأصلية | نعم | لا | نعم (تمرير مباشر) |
| الاعتماديات | لا شيء | بيئة تشغيل بايثون | ملف curl الثنائي |
| مصمم لـ | البرمجة النصية والمكالمات المخصصة | المكالمات المخصصة الودية | المكالمات المخصصة الودية |
الملخص الصادق: HTTPie و curlie يحلان نفس مشكلة سهولة القراءة وبيئة العمل بطرق مختلفة. HTTPie هو إعادة تنفيذ كاملة بلغة Python مع مجموعة ميزاته الخاصة. curlie هو غلاف رفيع يبقيك على curl. إذا كان فريقك يعتمد على علامات curl أو كنت ترغب في الوصول المباشر إلى كل خيار من خيارات curl، فإن curlie يناسبك تمامًا. إذا كنت تفضل مساحة ميزات HTTPie الأوسع ولا تمانع في الاعتماد على Python، فإن HTTPie اختيار ممتاز. يتعمق البرنامج التعليمي لـ HTTPie في هذه الأداة، وإذا كنت توازن بين الاثنين، فإن مقارنة curl بـ HTTPie توضح بناء الجملة بينهما.
للحصول على نظرة أوسع على خيارات الطرفية وواجهة المستخدم الرسومية بما يتجاوز هذه الثلاثة، راجع مجموعتنا من بدائل curl لاختبار REST API.
متى يكون curlie الأداة المناسبة، ومتى لا يكون كذلك
يتألق curlie في العمل السريع والتفاعلي:
- التحقق مما إذا كانت نقطة نهاية تعمل وتعود بالشكل الذي تتوقعه.
- فحص استجابة JSON بالعين المجردة دون الحاجة إلى تمريرها عبر
jqلقراءتها. - تصحيح أخطاء الرؤوس والمصادقة أثناء التطوير.
- التعليم أو عرض HTTP، حيث يظهر
-vالطلب الحقيقي.
حيث يتوقف عن المساعدة هو أي شيء يحتاج إلى تكرار، أو مشاركة، أو التحقق منه تلقائيًا. curlie ليس لديه مفهوم للطلبات المحفوظة. لا توجد بيئات للتبديل بين التطوير والإنتاج. لا توجد تأكيدات للتحقق من أن رمز الحالة هو 200 أو أن حقلًا يساوي قيمة متوقعة. لا يوجد تقرير عندما يتعطل شيء ما في الساعة 3 صباحًا في مسار عملك.
هذا ليس عيبًا في curlie. إنها أداة مخصصة تقوم بعمل مخصص بشكل جيد. ولكن في اللحظة التي تجد فيها نفسك تلصق نفس أمر curlie في مستند، أو تنسخه في برنامج نصي (shell script) مع فحوصات grep مكتوبة يدويًا، تكون قد تجاوزت ما هو مقصود من العميل التفاعلي.
مسار الترقية: من المكالمات الفردية إلى سير عمل محفوظ وقابل للتكرار
هذا هو المكان الذي ينقسم فيه سير العمل بشكل طبيعي. استمر في استخدام curlie للاستكشاف. عندما يحتاج طلب ما إلى التواجد في مكان ما، أو إعادة استخدامه، أو تشغيله في CI، انقله إلى منصة مصممة لذلك.

Apidog هو طبقة الثبات والتعاون لهذا الانتقال بالضبط. إنه ليس بديلاً فوريًا لـ curlie في الطرفية؛ إنه الخطوة التالية بعد الطرفية. باستخدام Apidog، يمكنك:
- حفظ الطلبات في مجموعات منظمة بدلاً من إعادة الكتابة أو البحث في سجل الأوامر الطرفية.
- إدارة البيئات بحيث يتم تشغيل نفس الطلب مقابل بيئات محلية، وتطوير (staging)، وإنتاج عن طريق تبديل متغير.
- إضافة تأكيدات تتحقق من رموز الحالة، وحقول الاستجابة، والمخطط، مما يحول الفحص اليدوي إلى فحص تلقائي.
- تشغيل الاختبارات في CI باستخدام
apidog run، وهو مشغل سطر الأوامر الذي ينفذ سيناريوهات الاختبار المحفوظة في خط أنابيب ويبلغ بالنجاح أو الفشل. - المشاركة مع فريقك من خلال مساحة عمل تعاونية، بحيث يصبح الطلب الذي قمت بتصحيحه مرة واحدة شيئًا يمكن للجميع إعادة استخدامه.
نمط عملي: استكشف نقطة نهاية باستخدام curlie حتى تفهمها، ثم أعد إنشاءها كطلب محفوظ في Apidog مع تأكيدات مرفقة. يظل الاستكشاف سريعًا وقابلًا للتصرف. يصبح التحقق دائمًا ومؤتمتًا. إذا كنت تقوم بإضفاء الطابع الرسمي على كيفية تحقق فريقك من نقاط النهاية، فإن دليل اختبار API يغطي المفاهيم وراء التأكيدات وسيناريوهات الاختبار.
الأسئلة المتكررة
هل curlie بديل لـ curl؟
ليس بالضبط. يعمل curlie فوق curl، لذا فهو أشبه بواجهة أمامية أكثر ودية بدلاً من كونه بديلاً. إنه يترجم بناء جملة مدمج إلى استدعاءات curl وينسق المخرجات. يظل curl هو المحرك نفسه، وتظل كل علامة curl أصلية تعمل من خلال curlie.
هل يعمل curlie في مسارات CI/CD؟
يمكنك استدعاء curlie في برنامج نصي، ولكنه ليس مصممًا للاختبار التلقائي. ليس لديه تأكيدات، ولا سيناريوهات اختبار محفوظة، ولا تقارير منظمة. لعمل مسار العمل، تحتاج إلى مشغل يتحقق من الاستجابات ويفشل البناء عندما يكون هناك خطأ ما. يملأ أمر apidog run في Apidog هذا الدور، وتغطي قائمتنا لأفضل 10 عملاء لاختبار API خيارات أخرى للاختبار القابل للتكرار والمتوافق مع CI.
ما هو الفرق بين curlie و HTTPie؟
تبدوان متشابهتين لأن curlie ينسخ بناء جملة HTTPie ومخرجاته الملونة. الفرق هو في المحرك. HTTPie هي أداة Python مستقلة بتطبيقها الخاص. curlie هو غلاف Go رفيع حول curl، لذلك يرث سلوك curl ويقبل علامات curl مباشرة. اختر curlie إذا كنت ترغب في البقاء على curl؛ اختر HTTPie إذا كنت تفضل مجموعة ميزاته المستقلة.
هل يمكنني رؤية أمر curl الفعلي الذي يقوم curlie بتشغيله؟
نعم. قم بتشغيل curlie مع العلامة -v (مطول) وسيطبع رؤوس الطلب والاستجابة جنبًا إلى جنب مع تفاصيل الطلب الأساسي. إنها طريقة مفيدة لتعلم علامات curl أو لتأكيد ما تم إرساله بالضبط.
الخلاصة
curlie أداة ذكية صغيرة: بناء جملة HTTPie القابل للقراءة ومخرجاته الملونة، مع قيام curl بالعمل الحقيقي في الخلفية. لفحص نقاط النهاية، وقراءة استجابات JSON، وتصحيح أخطاء المصادقة في الطرفية، إنه تحسين حقيقي لجودة الحياة مقارنة بـ curl الخام. فقط تذكر ما هو. إنه عميل تفاعلي، وليس مشغل اختبار.
عندما تحتاج طلباتك إلى الحفظ والمشاركة والتأكيد والتشغيل في CI، فهذه هي الإشارة للانتقال إلى طبقة أعلى. قم بتنزيل Apidog لتحويل نقاط النهاية التي تستكشفها في الطرفية إلى طلبات وبيئات واختبارات مؤتمتة يمكن لفريقك بأكمله الاعتماد عليها. احتفظ بـ curlie للأشياء السريعة، ودع Apidog يتعامل مع العمل الذي يجب تكراره.
