DEV Community

Cover image for أفضل أدوات CLI خفيفة الوزن للتطوير
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

أفضل أدوات CLI خفيفة الوزن للتطوير

يقضي مطور الواجهة الخلفية معظم يومه في حلقة قصيرة: يرسل طلبًا إلى نقطة نهاية، يقرأ استجابة JSON، يعدّل الكود، ثم يكرر. استخدام واجهة رسومية ثقيلة لهذه الدورة يضيف وقت تحميل وخطوات لا تحتاجها في كثير من المهام اليومية.

جرّب Apidog اليوم

أدوات سطر الأوامر (CLI) مناسبة لهذه الحلقة لأنها تبدأ بسرعة، تؤدي مهمة محددة، ويمكن ربطها معًا في سكربتات shell أو مهام CI. ستحتاج غالبًا إلى عميل HTTP، وأداة لمعالجة JSON، وطريقة لكشف خادم محلي، ومراقب ملفات، ومشغل لاختبارات API.

يعرض هذا الدليل عشر أدوات تستحق مكانًا في PATH لمطور الواجهة الخلفية، مع أمر عملي لكل أداة. وللسياق الأشمل حول بناء واجهات برمجة التطبيقات، راجع دليل تطوير API.

ما الذي يجعل أداة سطر الأوامر خفيفة الوزن؟

الخفة لا تعني قلة الميزات فقط؛ بل تعني تقليل الاحتكاك بينك وبين النتيجة. قيّم كل أداة وفقًا لأربعة معايير:

  • حجم وطريقة التثبيت: ملف ثنائي واحد أو حزمة npx صغيرة أفضل من أداة تسحب بيئة تشغيل وملفات إعداد كثيرة.
  • سرعة البدء: يجب أن تعمل الأداة فورًا، خصوصًا عندما تستدعيها مرارًا داخل حلقة تطوير.
  • الإعداد قبل أول نتيجة: الأداة الخفيفة تعطيك نتيجة مفيدة دون مشروع جديد أو حساب أو لوحة تحكم.
  • قابلية التركيب: تقرأ من stdin، تكتب إلى stdout، وتعيد رمز خروج مناسبًا حتى تعمل داخل pipelines وCI.

الأدوات التالية مرتبة تقريبًا من الأبسط والأكثر تخصيصًا إلى الأدوات التي تدير جزءًا أكبر من سير العمل. أداة curl موجودة غالبًا على جهازك بالفعل.

curl

curl هو الأساس لطلبات HTTP القابلة للبرمجة. استخدمه عندما تحتاج إلى أمر يمكن نسخه إلى سكربت أو مهمة CI دون أي تبعيات إضافية.

curl -s -X POST https://api.github.com/repos/curl/curl/issues \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Test issue"}'
Enter fullscreen mode Exit fullscreen mode

استخدم هذه الخيارات حسب المهمة:

  • -s: إخفاء عداد التقدم لإخراج نظيف.
  • -i: عرض رؤوس الاستجابة مع الجسم.
  • -w '%{http_code}': طباعة رمز الحالة.
  • --fail: إرجاع رمز خروج غير صفري عند استجابات 4xx أو 5xx، وهو مفيد في CI.
curl --fail --silent --show-error \
  -w '\nHTTP %{http_code}\n' \
  https://api.example.com/health
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: سكربتات shell، فحوصات الصحة، وطلبات CI.

الحدود: بناء جملة الخيارات كثيف، وبناء أو تحليل JSON يدوي نسبيًا.

HTTPie

HTTPie، عبر الأمر http، يجعل الطلبات التفاعلية أسهل للقراءة والكتابة. يرسل JSON افتراضيًا ويعرض استجابات منسقة.

http POST httpbin.org/post name=apidog role=api-tool active:=true
Enter fullscreen mode Exit fullscreen mode

ينتج الأمر جسم JSON مشابهًا للتالي:

{
  "name": "apidog",
  "role": "api-tool",
  "active": true
}
Enter fullscreen mode Exit fullscreen mode

استخدم الصيغ التالية أثناء بناء الطلب:

  • key=value لقيمة نصية.
  • key:=value لقيمة JSON خام، مثل الأرقام والقيم المنطقية.
  • Header:value لإضافة رأس.
http GET https://api.example.com/users \
  Authorization:"Bearer $TOKEN" \
  page:=1
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: استكشاف API يدويًا عندما تكون قابلية القراءة أهم من الاختصار.

الحدود: يعتمد على Python، لذلك قد يكون بدء تشغيله أبطأ من بديل أصلي مثل xh.

xh

xh يقدم أسلوب HTTPie نفسه تقريبًا، لكنه ملف ثنائي مبني بـ Rust. هذا يجعله مناسبًا للحاويات وصور CI الخفيفة.

xh POST httpbin.org/post name=apidog age:=24
Enter fullscreen mode Exit fullscreen mode

بما أن الصياغة متوافقة مع أسلوب HTTPie، يمكنك استخدام:

xh GET https://api.example.com/users \
  Authorization:"Bearer $TOKEN" \
  limit:=20
Enter fullscreen mode Exit fullscreen mode

يدعم xh أيضًا HTTP/2 وHTTP/3. يمكنك تنزيل الملفات الثنائية الجاهزة من مشروع xh على GitHub.

الأفضل لـ: من يريد سهولة HTTPie مع سرعة بدء أصلية وتثبيت بلا تبعيات.

الحدود: يغطي الاستخدامات الشائعة لـ HTTPie، لكنه لا يهدف إلى تغطية كل الإضافات الممكنة.

jq

jq هو الأداة التي تحول استجابة JSON كبيرة إلى قيمة يمكن أن يستخدمها سكربتك. اربطه مع curl أو xh بدل فحص JSON يدويًا.

curl -s https://api.github.com/repos/stedolan/jq | jq '.stargazers_count'
Enter fullscreen mode Exit fullscreen mode

لاستخراج قيمة نصية خام لاستخدامها في متغير shell، أضف -r:

REPO_NAME=$(curl -s https://api.github.com/repos/stedolan/jq | jq -r '.name')
echo "$REPO_NAME"
Enter fullscreen mode Exit fullscreen mode

أمثلة عملية أخرى:

# استخراج أسماء العناصر من مصفوفة
jq '.items[] | .name'

# تصفية العناصر النشطة
jq '.items[] | select(.active)'

# إنشاء كائن جديد من الاستجابة
jq '{id, name, status}'
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: استخراج وتحويل حقول JSON في السكربتات وCI.

الحدود: التحويلات المعقدة والمتداخلة تحتاج إلى تعلم صياغة jq.

gh (GitHub CLI)

gh ينقل عمليات GitHub الشائعة إلى الطرفية. بعد تسجيل الدخول مرة واحدة، يمكنك إنشاء طلبات السحب، متابعة فحوصات CI، أو استدعاء GitHub API بمصادقة جاهزة.

gh pr create --title "Add rate limiting" --body "Closes #42" --base main
Enter fullscreen mode Exit fullscreen mode

أوامر عملية لسير العمل اليومي:

# متابعة فحوصات طلب السحب الحالي
gh pr checks --watch

# متابعة تنفيذ GitHub Actions
gh run watch

# استدعاء GitHub API مباشرة
gh api repos/{owner}/{repo}/issues
Enter fullscreen mode Exit fullscreen mode

سجّل الدخول أولًا:

gh auth login
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: أتمتة عمليات GitHub، مثل إنشاء PR من CI أو متابعة Actions.

الحدود: مخصص لـ GitHub، ولن يحل محل أدوات GitLab أو Bitbucket.

ngrok

يكشف ngrok منفذًا محليًا عبر رابط عام آمن. استخدمه عند اختبار webhooks أو مشاركة خادم تطوير مع زميل أو خدمة خارجية.

ngrok http 8080
Enter fullscreen mode Exit fullscreen mode

سيعرض ngrok عنوان URL عام من نوع https:// يوجه الطلبات إلى localhost:8080.

لتصحيح webhook، افتح مفتش الطلبات المحلي:

http://127.0.0.1:4040
Enter fullscreen mode Exit fullscreen mode

من هناك يمكنك مراجعة الطلبات التي وصلت وإعادة تشغيلها أثناء التحقيق في مشكلة.

الأفضل لـ: اختبار webhooks، مشاركة بيئة محلية، واختبار استدعاءات الطرف الثالث.

الحدود: خدمة تجارية بطبقة مجانية؛ قد يتغير عنوان URL بين الجلسات وتوجد حدود للاستخدام.

mkcert

mkcert ينشئ شهادات HTTPS موثوقة محليًا. استخدمه عندما تحتاج إلى اختبار سلوك لا يظهر إلا مع HTTPS، مثل ملفات تعريف الارتباط الآمنة أو إعادة توجيه OAuth.

mkcert -install
mkcert localhost 127.0.0.1 myapp.local
Enter fullscreen mode Exit fullscreen mode

نفّذ mkcert -install مرة واحدة لإعداد مرجع مصدق محلي على جهازك. بعد ذلك، أنشئ شهادة للنطاقات المحلية التي يحتاجها خادم التطوير.

مثال عند استخدام اسم محلي مخصص:

mkcert api.localhost app.localhost
Enter fullscreen mode Exit fullscreen mode

ثم مرّر ملفات الشهادة والمفتاح التي أنشأها الأمر إلى خادم التطوير أو الوكيل العكسي.

الأفضل لـ: تشغيل HTTPS محلي موثوق يقترب من سلوك الإنتاج.

الحدود: للتطوير فقط. لا تستخدم شهادات mkcert في الإنتاج، واحمِ مفتاح المرجع المصدق المحلي.

watchexec

watchexec يراقب الملفات ويعيد تشغيل أمر عند حدوث تغيير. يفيد في تقصير دورة التعديل والتشغيل دون الاعتماد على وضع مراقبة خاص بإطار عمل معين.

watchexec -e py -r 'pytest tests/'
Enter fullscreen mode Exit fullscreen mode

في هذا المثال:

  • -e py يراقب ملفات Python.
  • -r يوقف العملية السابقة ويعيد تشغيلها بدل تكديس عمليات متعددة.

أمثلة لمشاريع أخرى:

# خادم Go
watchexec -r 'go run .'

# اختبارات JavaScript
watchexec 'npm test'

# تطبيق Node.js
watchexec -e js,json -r 'node server.js'
Enter fullscreen mode Exit fullscreen mode

يحترم watchexec ملف .gitignore افتراضيًا، لذلك لا يعيد التشغيل عادة بسبب مخرجات البناء أو التبعيات المتجاهلة.

الأفضل لـ: إعادة تشغيل خادم محلي أو اختبارات عند الحفظ.

الحدود: يعيد تشغيل العملية فقط؛ لا يقدم إعادة تحميل ساخنة للوحدات أو حفظ حالة العملية.

Docker CLI

Docker CLI أثقل من الأدوات الأخرى لأنه يحتاج إلى Docker daemon وموارد نظام، لكنه عملي جدًا لتشغيل خدمات تطوير قابلة للتخلص منها مثل Postgres وRedis.

docker run --rm -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:16
Enter fullscreen mode Exit fullscreen mode

يعني ذلك:

  • --rm: حذف الحاوية عند إيقافها.
  • -e: تعريف متغير بيئة داخل الحاوية.
  • -p: ربط منفذ الحاوية بمنفذ جهازك.

يمكن لتطبيقك الآن الاتصال بـ:

localhost:5432
Enter fullscreen mode Exit fullscreen mode

مثال Redis سريع:

docker run --rm -p 6379:6379 redis:7
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: قواعد البيانات والخدمات المساندة لتطوير محلي واختبارات تكامل قابلة للتكرار.

الحدود: ليس خفيفًا من ناحية الموارد، لكنه يوفر طريقة قابلة للبرمجة لتشغيل بنية محلية دون تثبيت الخدمات مباشرة على النظام.

apidog-cli

عند العمل على API من الطرفية، تحتاج أحيانًا إلى الوصول إلى مشروع API نفسه: نقاط النهاية، المخططات، البيئات، وسيناريوهات الاختبار. توفر Apidog أداة apidog-cli لربط هذه الموارد بسير عمل الطرفية.

ثبّت الأداة وسجّل الدخول ثم شغّل سيناريو اختبار محفوظًا:

npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

يشغّل apidog run السيناريو مقابل البيئة المحددة ويطبع النتائج في الطرفية. عند نجاح التأكيدات يعيد رمز خروج 0، وعند الفشل يعيد رمزًا غير صفري، لذلك يمكن وضعه مباشرة ضمن بوابة CI.

مثال مبسط في GitHub Actions:

- name: Run API scenario
  run: apidog run -t ${{ secrets.APIDOG_SCENARIO_ID }} -e ${{ secrets.APIDOG_ENV_ID }} -r cli
Enter fullscreen mode Exit fullscreen mode

تغطي CLI أيضًا مجموعات أوامر لإدارة موارد المشروع، منها:

  • endpoint وschema للتصميم.
  • import وexport لنقل مواصفات OpenAPI وSwagger وPostman.
  • mock لإعداد توقعات التقليد.
  • environment وvariables لإدارة الإعدادات.
  • run لتشغيل سيناريوهات الاختبار.

ينتج الأمر JSON منظمًا مع agentHints.nextSteps، ما يجعله مناسبًا أيضًا لسير عمل مساعدي الترميز بالذكاء الاصطناعي الذين يقومون بتطوير API.

للتفاصيل، راجع دليل Apidog CLI الكامل ودليل تثبيت Apidog CLI.

الأفضل لـ: تشغيل سيناريوهات اختبار API في CI وإدارة موارد المشروع من السكربتات، خصوصًا في سير عمل تطوير API المعتمد على المواصفات.

ملاحظة: Apidog منتج تجاري بطبقة مجانية وليس مفتوح المصدر. الجزء الخفيف هنا هو apidog-cli، بينما منصة Apidog الكاملة توفر واجهة رسومية فوق المشروع نفسه.

كيف تختار الأداة المناسبة؟

هذه الأدوات مكملة لبعضها غالبًا، وليست بدائل متطابقة. قد تستخدم عميل HTTP مع jq، ثم تضيف ngrok لاختبار webhook، وwatchexec لتشغيل الاختبارات تلقائيًا.

الأداة الأفضل لـ التثبيت مفتوحة المصدر؟
curl طلبات مبرمجة وفحوصات صحة CI مثبتة مسبقًا غالبًا نعم (ترخيص curl)
HTTPie طلبات تفاعلية قابلة للقراءة pip install httpie نعم (BSD)
xh أسلوب HTTPie مع سرعة أصلية cargo install xh أو ملف ثنائي نعم (MIT)
jq تصفية استجابات JSON brew install jq أو ملف ثنائي نعم (MIT)
gh أتمتة PR وCI على GitHub brew install gh أو ملف ثنائي نعم (MIT)
ngrok كشف localhost واختبار webhooks تحميل ملف ثنائي لا
mkcert شهادات HTTPS محلية موثوقة brew install mkcert أو ملف ثنائي نعم (BSD)
watchexec إعادة التشغيل عند تغيير الملفات cargo install watchexec-cli نعم (Apache-2.0)
Docker CLI خدمات تطوير قابلة للتخلص منها تثبيت Docker نعم (Apache-2.0)
apidog-cli تشغيل السيناريوهات وإدارة المشروع npm install -g apidog-cli لا

اختصر قرارك حسب المهمة:

  • إرسال طلبات تفاعلية: xh أو HTTPie.
  • إرسال طلبات داخل سكربت أو CI: curl.
  • قراءة وتحويل JSON: jq.
  • كشف خادم محلي: ngrok.
  • HTTPS محلي موثوق: mkcert.
  • إعادة التشغيل عند الحفظ: watchexec.
  • تشغيل خدمات مثل Postgres وRedis: Docker.
  • تشغيل اختبارات API وإدارة موارد المشروع: apidog-cli.

خلاصة

المجموعة الجيدة من أدوات CLI ليست كبيرة؛ إنها مجموعة من أدوات سريعة يمكن تركيبها معًا. استخدم curl أو xh لإرسال الطلبات، وjq لتحويل الاستجابات، وngrok وmkcert لمعالجة الوصول المحلي وHTTPS، وwatchexec لتقصير حلقة التعديل والتشغيل، وDocker لتشغيل الخدمات المساندة.

يربط apidog-cli هذه الحلقة بمشروع API الفعلي، بحيث تكون نقاط النهاية والاختبارات التي تشغلها من الطرفية هي نفسها التي يديرها الفريق. نزّل Apidog لإعداد المشروع، ثم استخدم CLI لتشغيل السيناريوهات ضمن مسار CI.

Top comments (0)