DEV Community

Cover image for ما هو httpbin؟ شرح نقاط النهاية، كيفية الاستخدام، والبدائل
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

ما هو httpbin؟ شرح نقاط النهاية، كيفية الاستخدام، والبدائل

إذا احتجت إلى اختبار عميل HTTP بدون إعداد خادم خلفي حقيقي، استخدم httpbin كنقطة انعكاس بسيطة: ترسل طلبًا فيعيد لك JSON يوضح ما استقبله الخادم بالضبط. هذا مفيد لتصحيح الرؤوس (headers)، اختبار أخطاء مثل 500، التحقق من وصول رمز المصادقة، أو فحص جسم الطلب. يمكنك استخدامه من curl أو من عميل API كامل مثل Apidog. المثيل العام متاح على httpbin.org، والمشروع مفتوح المصدر بموجب ترخيص ISC.

جرّب Apidog اليوم

ما هو httpbin؟

httpbin خدمة صغيرة لطلبات واستجابات HTTP. ترسل إليها طلبًا، فتُرجع وصفًا JSON لهذا الطلب: الرؤوس، وسائط الاستعلام، الجسم، عنوان IP، ومعلومات أخرى حسب نقطة النهاية.

تم إنشاؤه بواسطة Kenneth Reitz، المطور وراء مكتبة Python requests، وهو مكتوب بلغة Python باستخدام Flask.

الفكرة العملية بسيطة: إذا أردت معرفة هل عميلك يرسل رأس User-Agent الصحيح، استدعِ:

curl https://httpbin.org/headers
Enter fullscreen mode Exit fullscreen mode

ستحصل على الرؤوس التي وصلت فعليًا إلى الخادم. لا تحتاج قاعدة بيانات، ولا تسجيل دخول، ولا إعداد بيئة اختبار.

المثيل العام httpbin.org مناسب للفحوصات السريعة، لكنه خدمة مجانية مشتركة وقد يصبح بطيئًا أو غير متاح مؤقتًا. الكود موجود حاليًا ضمن مستودع postmanlabs/httpbin على GitHub، مع وجود فروع مجتمعية مثل Kong. إذا كنت ستستخدمه في CI أو اختبارات متكررة، فالأفضل تشغيله ذاتيًا.

نقاط نهاية httpbin الأساسية

نقطة النهاية الاستخدام العملي
/get فحص وسائط الاستعلام، الرؤوس، وعنوان IP لطلبات GET
/post فحص JSON، بيانات النموذج، الجسم الخام، والرؤوس لطلبات POST
/put, /patch, /delete اختبار طرق HTTP الأخرى بنفس أسلوب الانعكاس
/status/{codes} إجبار الخادم على إرجاع رمز حالة محدد مثل 404 أو 503
/headers عرض الرؤوس التي وصلت إلى الخادم فقط
/ip عرض عنوان IP الأصلي للطلب
/user-agent عرض قيمة User-Agent
/delay/{n} تأخير الاستجابة n ثانية، حتى 10 ثوانٍ، لاختبار timeout
/basic-auth/{user}/{passwd} اختبار Basic Auth ببيانات اعتماد محددة
/bearer اختبار وجود Bearer token في رأس Authorization
/redirect/{n} اختبار التعامل مع عدد محدد من عمليات إعادة التوجيه
/cookies عرض ملفات تعريف الارتباط التي أرسلها العميل
/uuid توليد UUID عشوائي
/anything انعكاس كامل لأي طلب بغض النظر عن الطريقة

أكثر نقطتين مفيدتين في الاختبارات العملية هما:

  • /status/{code} لاختبار مسارات الأخطاء.
  • /delay/{n} لاختبار المهلات وإعادة المحاولة.

إذا كنت تحتاج إلى أجسام استجابة وهمية بدلًا من مجرد انعكاس الطلب، فادمج httpbin مع واجهة برمجة تطبيقات وهمية لبيانات الاختبار.

كيفية استخدام httpbin لاختبار عميل HTTP

1. اختبار طلب GET ومعلمات الاستعلام

ابدأ بطلب بسيط:

curl "https://httpbin.org/get?tool=apidog&check=headers"
Enter fullscreen mode Exit fullscreen mode

ستحصل على JSON يحتوي غالبًا على:

{
  "args": {
    "check": "headers",
    "tool": "apidog"
  },
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/..."
  },
  "origin": "..."
}
Enter fullscreen mode Exit fullscreen mode

استخدم هذا للتحقق من أن عميلك يرسل معلمات الاستعلام كما تتوقع.

2. اختبار إرسال JSON عبر POST

curl -X POST "https://httpbin.org/post" \
  -H "Content-Type: application/json" \
  -d '{"name": "widget", "qty": 3}'
Enter fullscreen mode Exit fullscreen mode

يرجع httpbin الجسم المحلل في الحقل json، والجسم الخام في data، والرؤوس في headers.

هذا مفيد للتأكد من:

  • أن Content-Type صحيح.
  • أن JSON لم يتغير أثناء الإرسال.
  • أن العميل يرسل الجسم بالطريقة المتوقعة.

3. اختبار أخطاء HTTP

لاختبار منطق التعامل مع الأخطاء:

curl -i "https://httpbin.org/status/503"
Enter fullscreen mode Exit fullscreen mode

ستحصل على استجابة حقيقية برمز:

HTTP/2 503
Enter fullscreen mode Exit fullscreen mode

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

  • retry logic
  • circuit breaker
  • رسائل الخطأ المعروضة للمستخدم
  • تسجيل الأخطاء في logs

مثال آخر لاختبار rate limiting:

curl -i "https://httpbin.org/status/429"
Enter fullscreen mode Exit fullscreen mode

4. اختبار timeout

استخدم /delay/{n} لمحاكاة استجابة بطيئة:

curl "https://httpbin.org/delay/5"
Enter fullscreen mode Exit fullscreen mode

ثم اضبط مهلة curl:

curl --max-time 2 "https://httpbin.org/delay/5"
Enter fullscreen mode Exit fullscreen mode

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

5. اختبار الرؤوس المخصصة

curl "https://httpbin.org/headers" \
  -H "X-Request-Id: test-123" \
  -H "Authorization: Bearer demo-token"
Enter fullscreen mode Exit fullscreen mode

تحقق من أن القيم وصلت كما هي في الاستجابة.

لا ترسل رموزًا حقيقية أو أسرارًا إلى المثيل العام. استخدم رموزًا وهمية أو شغّل نسخة محلية.

6. اختبار Bearer token

curl "https://httpbin.org/bearer" \
  -H "Authorization: Bearer demo-token"
Enter fullscreen mode Exit fullscreen mode

إذا كان الرأس موجودًا، يعيد httpbin استجابة تؤكد المصادقة.

7. اختبار Basic Auth

curl -u user:passwd "https://httpbin.org/basic-auth/user/passwd"
Enter fullscreen mode Exit fullscreen mode

إذا تطابقت بيانات الاعتماد مع المسار، تحصل على استجابة ناجحة.

استخدام httpbin من عميل API رسومي

لا تحتاج إلى البقاء في الطرفية. يمكنك استخدام أي عميل REST.

مثال عملي:

  1. افتح Apidog.
  2. أنشئ طلبًا جديدًا.
  3. استخدم الرابط:
https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode
  1. أضف Query Params مثل:
tool=apidog
env=dev
Enter fullscreen mode Exit fullscreen mode
  1. أرسل الطلب.
  2. افحص الاستجابة والرؤوس والتاريخ.

هذا مفيد عندما تريد حفظ الطلبات، مشاركة الاختبار مع زميل، أو مقارنة الاستجابات بين البيئات. وإذا كنت تفضل أدوات الطرفية، راجع عملاء TUI REST API.

استضافة httpbin ذاتيًا باستخدام Docker

المثيل العام جيد للتجارب السريعة، لكنه غير مناسب كاعتماد دائم داخل اختبارات CI. لتقليل الاعتماد على خدمة خارجية، شغّل نسخة محلية.

اسحب الصورة:

docker pull kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

شغّل الحاوية على المنفذ 80:

docker run -p 80:80 kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

اختبرها:

curl "http://localhost/get"
Enter fullscreen mode Exit fullscreen mode

إذا كان المنفذ 80 مستخدمًا، استخدم منفذًا آخر:

docker run -p 8080:80 kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

ثم استدعِ:

curl "http://localhost:8080/get"
Enter fullscreen mode Exit fullscreen mode

الصورة منشورة على Docker Hub باسم kennethreitz/httpbin.

استخدم هذا الإعداد في CI عندما تريد اختبارات مستقرة بدون الاعتماد على httpbin.org.

مثال بسيط داخل سكربت اختبار:

docker run -d --name httpbin-test -p 8080:80 kennethreitz/httpbin

curl -f "http://localhost:8080/status/200"

docker stop httpbin-test
docker rm httpbin-test
Enter fullscreen mode Exit fullscreen mode

أمثلة اختبار شائعة

اختبار أن العميل يرسل User-Agent

curl "https://httpbin.org/user-agent" \
  -H "User-Agent: my-client/1.0"
Enter fullscreen mode Exit fullscreen mode

اختبار إرسال cookies

curl "https://httpbin.org/cookies" \
  -H "Cookie: session_id=abc123; theme=dark"
Enter fullscreen mode Exit fullscreen mode

اختبار redirects

curl -L "https://httpbin.org/redirect/3"
Enter fullscreen mode Exit fullscreen mode

بدون -L سترى الاستجابة قبل تتبع إعادة التوجيه. مع -L يتبع curl عمليات إعادة التوجيه.

اختبار أي طريقة HTTP

curl -X PATCH "https://httpbin.org/anything" \
  -H "Content-Type: application/json" \
  -d '{"op": "replace", "path": "/name", "value": "new-name"}'
Enter fullscreen mode Exit fullscreen mode

/anything مفيدة عندما تريد فحص كل تفاصيل الطلب دون اختيار نقطة نهاية محددة.

بدائل httpbin

Postman Echo

Postman Echo خدمة صدى مستضافة تشبه httpbin. يمكنك استدعاء:

https://postman-echo.com/get
Enter fullscreen mode Exit fullscreen mode

وتحصل على الطلب منعكسًا. تدعم GET وPOST والمصادقة ونقاط نهاية مساعدة. راجع وثائق Postman Echo للتفاصيل.

إذا كان httpbin.org غير متاح، فهي بديل عملي.

httpbin مستضاف ذاتيًا

تشغيل Docker يمنحك نفس السلوك مع تحكم كامل. استخدمه عندما تحتاج إلى:

  • اختبارات CI موثوقة.
  • بيئة داخل شبكة خاصة.
  • عدم إرسال بيانات اختبار إلى خدمة عامة.
  • تجنب حدود أو أعطال الخدمة المشتركة.

خدمات Mock

httpbin يعكس الطلب؛ لا يبني بيانات نطاق واقعية. إذا كنت تحتاج إلى استجابات مثل قائمة مستخدمين، طلب شراء، أو نتائج paginated، استخدم mock server.

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

Apidog كطبقة عميل واختبار

httpbin هو الهدف الذي ترسل إليه الطلبات. Apidog هو بيئة العمل التي تدير منها الطلبات والاختبارات.

يمكنك استخدام Apidog من أجل:

  • إرسال الطلبات إلى httpbin.
  • حفظ الطلبات بدلًا من تكرار أوامر curl.
  • كتابة assertions.
  • ربط عدة طلبات في سيناريو اختبار.
  • تشغيل اختبارات API ضمن CI.
  • إنشاء mock APIs عند الحاجة إلى بيانات منظمة.

عندما تتجاوز الحاجة مجرد فحص سريع، انقل طلباتك إلى اختبارات محفوظة وقابلة للتكرار. ولخيارات أوسع لا تتطلب تثبيتًا، راجع أدوات اختبار API المجانية عبر الإنترنت.

الأسئلة الشائعة

هل httpbin مجاني؟

نعم. مثيل httpbin.org العام مجاني ولا يحتاج إلى حساب. المصدر مفتوح بموجب ترخيص ISC، ويمكنك تشغيله بنفسك مجانًا.

هل httpbin لا يزال قيد الصيانة؟

الكود المصدري موجود في مستودع postmanlabs/httpbin GitHub. الصيانة كانت متقطعة عبر السنوات، لذلك تعتمد فرق كثيرة على نسخة Docker مستضافة ذاتيًا للمهام المهمة.

هل يمكن استخدام httpbin لاختبار webhooks؟

ليس تمامًا. httpbin يعكس الطلبات التي ترسلها إليه، لكنه لا يستقبل حدثًا من خدمة خارجية ثم يمرره إلى جهازك المحلي. لاختبار webhooks محليًا، استخدم خدمة نفق أو أداة مخصصة. راجع دليل اختبار واجهات برمجة تطبيقات localhost و webhooks، وهذا التمهيد حول كيف تعمل webhooks.

ما الفرق بين httpbin و Postman Echo؟

كلاهما يعكس طلب HTTP كـ JSON. httpbin خدمة Python وFlask مفتوحة المصدر، بينما Postman Echo خدمة مستضافة بواسطة Postman. اختر المتاح والأكثر استقرارًا لحالتك.

هل يمكن اختبار معالجة الأخطاء باستخدام httpbin؟

نعم. استخدم:

/status/500
/status/429
/status/503
Enter fullscreen mode Exit fullscreen mode

ولاختبار البطء:

/delay/5
Enter fullscreen mode Exit fullscreen mode

هذه طريقة مباشرة لاختبار retry logic وtimeout handling بدون كسر API حقيقية.

الخلاصة

httpbin أداة صغيرة ومفيدة لاختبار عملاء HTTP بسرعة. استخدم:

  • /get و/post للتحقق مما ترسله.
  • /headers و/user-agent لفحص الرؤوس.
  • /status/{code} لاختبار الأخطاء.
  • /delay/{n} لاختبار المهلات.
  • Docker لتشغيل نسخة مستقرة داخل CI.

وعندما تحتاج إلى أكثر من صدى بسيط، استخدم منصة اختبار API لحفظ الطلبات، إضافة assertions، تشغيل سيناريوهات، أو إنشاء mocks.

يمنحك Apidog عميل API لاستخدام httpbin، ومحاكاة ذكية عند الحاجة إلى بديل، واختبارات آلية لتثبيت السلوك الذي تحققت منه. قم بتنزيل Apidog وحوّل فحوصات httpbin السريعة إلى اختبارات قابلة للتكرار.

Top comments (0)