إذا احتجت إلى اختبار عميل HTTP بدون إعداد خادم خلفي حقيقي، استخدم httpbin كنقطة انعكاس بسيطة: ترسل طلبًا فيعيد لك JSON يوضح ما استقبله الخادم بالضبط. هذا مفيد لتصحيح الرؤوس (headers)، اختبار أخطاء مثل 500، التحقق من وصول رمز المصادقة، أو فحص جسم الطلب. يمكنك استخدامه من curl أو من عميل API كامل مثل Apidog. المثيل العام متاح على httpbin.org، والمشروع مفتوح المصدر بموجب ترخيص ISC.
ما هو httpbin؟
httpbin خدمة صغيرة لطلبات واستجابات HTTP. ترسل إليها طلبًا، فتُرجع وصفًا JSON لهذا الطلب: الرؤوس، وسائط الاستعلام، الجسم، عنوان IP، ومعلومات أخرى حسب نقطة النهاية.
تم إنشاؤه بواسطة Kenneth Reitz، المطور وراء مكتبة Python requests، وهو مكتوب بلغة Python باستخدام Flask.
الفكرة العملية بسيطة: إذا أردت معرفة هل عميلك يرسل رأس User-Agent الصحيح، استدعِ:
curl https://httpbin.org/headers
ستحصل على الرؤوس التي وصلت فعليًا إلى الخادم. لا تحتاج قاعدة بيانات، ولا تسجيل دخول، ولا إعداد بيئة اختبار.
المثيل العام 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"
ستحصل على JSON يحتوي غالبًا على:
{
"args": {
"check": "headers",
"tool": "apidog"
},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/..."
},
"origin": "..."
}
استخدم هذا للتحقق من أن عميلك يرسل معلمات الاستعلام كما تتوقع.
2. اختبار إرسال JSON عبر POST
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
يرجع httpbin الجسم المحلل في الحقل json، والجسم الخام في data، والرؤوس في headers.
هذا مفيد للتأكد من:
- أن
Content-Typeصحيح. - أن JSON لم يتغير أثناء الإرسال.
- أن العميل يرسل الجسم بالطريقة المتوقعة.
3. اختبار أخطاء HTTP
لاختبار منطق التعامل مع الأخطاء:
curl -i "https://httpbin.org/status/503"
ستحصل على استجابة حقيقية برمز:
HTTP/2 503
استخدم هذا لاختبار:
- retry logic
- circuit breaker
- رسائل الخطأ المعروضة للمستخدم
- تسجيل الأخطاء في logs
مثال آخر لاختبار rate limiting:
curl -i "https://httpbin.org/status/429"
4. اختبار timeout
استخدم /delay/{n} لمحاكاة استجابة بطيئة:
curl "https://httpbin.org/delay/5"
ثم اضبط مهلة curl:
curl --max-time 2 "https://httpbin.org/delay/5"
هنا يفترض أن يفشل الطلب بسبب انتهاء المهلة. هذا سيناريو جيد لاختبار سلوك العميل عند بطء الشبكة أو الخادم.
5. اختبار الرؤوس المخصصة
curl "https://httpbin.org/headers" \
-H "X-Request-Id: test-123" \
-H "Authorization: Bearer demo-token"
تحقق من أن القيم وصلت كما هي في الاستجابة.
لا ترسل رموزًا حقيقية أو أسرارًا إلى المثيل العام. استخدم رموزًا وهمية أو شغّل نسخة محلية.
6. اختبار Bearer token
curl "https://httpbin.org/bearer" \
-H "Authorization: Bearer demo-token"
إذا كان الرأس موجودًا، يعيد httpbin استجابة تؤكد المصادقة.
7. اختبار Basic Auth
curl -u user:passwd "https://httpbin.org/basic-auth/user/passwd"
إذا تطابقت بيانات الاعتماد مع المسار، تحصل على استجابة ناجحة.
استخدام httpbin من عميل API رسومي
لا تحتاج إلى البقاء في الطرفية. يمكنك استخدام أي عميل REST.
مثال عملي:
- افتح Apidog.
- أنشئ طلبًا جديدًا.
- استخدم الرابط:
https://httpbin.org/get
- أضف Query Params مثل:
tool=apidog
env=dev
- أرسل الطلب.
- افحص الاستجابة والرؤوس والتاريخ.
هذا مفيد عندما تريد حفظ الطلبات، مشاركة الاختبار مع زميل، أو مقارنة الاستجابات بين البيئات. وإذا كنت تفضل أدوات الطرفية، راجع عملاء TUI REST API.
استضافة httpbin ذاتيًا باستخدام Docker
المثيل العام جيد للتجارب السريعة، لكنه غير مناسب كاعتماد دائم داخل اختبارات CI. لتقليل الاعتماد على خدمة خارجية، شغّل نسخة محلية.
اسحب الصورة:
docker pull kennethreitz/httpbin
شغّل الحاوية على المنفذ 80:
docker run -p 80:80 kennethreitz/httpbin
اختبرها:
curl "http://localhost/get"
إذا كان المنفذ 80 مستخدمًا، استخدم منفذًا آخر:
docker run -p 8080:80 kennethreitz/httpbin
ثم استدعِ:
curl "http://localhost:8080/get"
الصورة منشورة على 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
أمثلة اختبار شائعة
اختبار أن العميل يرسل User-Agent
curl "https://httpbin.org/user-agent" \
-H "User-Agent: my-client/1.0"
اختبار إرسال cookies
curl "https://httpbin.org/cookies" \
-H "Cookie: session_id=abc123; theme=dark"
اختبار redirects
curl -L "https://httpbin.org/redirect/3"
بدون -L سترى الاستجابة قبل تتبع إعادة التوجيه. مع -L يتبع curl عمليات إعادة التوجيه.
اختبار أي طريقة HTTP
curl -X PATCH "https://httpbin.org/anything" \
-H "Content-Type: application/json" \
-d '{"op": "replace", "path": "/name", "value": "new-name"}'
/anything مفيدة عندما تريد فحص كل تفاصيل الطلب دون اختيار نقطة نهاية محددة.
بدائل httpbin
Postman Echo
Postman Echo خدمة صدى مستضافة تشبه httpbin. يمكنك استدعاء:
https://postman-echo.com/get
وتحصل على الطلب منعكسًا. تدعم 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
ولاختبار البطء:
/delay/5
هذه طريقة مباشرة لاختبار 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)