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

ما هو httpbin؟ خدمة بسيطة لطلبات واستجابات HTTP لاختبار العملاء. تعرّف على نقاط نهايته الرئيسية، وكيفية استخدامه مع curl، واستضافته ذاتيًا باستخدام Docker، وأفضل بدائل httpbin.

INEZA Felin-Michel

INEZA Felin-Michel

3 يوليو 2026

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

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

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

زر

ما هو httpbin؟

httpbin هو خدمة لطلبات واستجابات HTTP. ترسل إليه طلبًا؛ فيعيد إليك وصفًا JSON لهذا الطلب. لا شيء أكثر. لقد تم إنشاؤه بواسطة Kenneth Reitz، المطور وراء مكتبة Python `requests` الشهيرة، وهو مكتوب بلغة Python باستخدام Flask.

تكمن قيمته في بساطته. لنفترض أنك تريد معرفة ما إذا كان عميل HTTP الخاص بك يضبط رأس `User-Agent` بشكل صحيح. يمكنك زيارة `https://httpbin.org/headers` ويقوم الرد بسرد كل رأس استقبله الخادم. لا توجد قاعدة بيانات، ولا تسجيل دخول، ولا إعداد. تحصل على مرآة نظيفة لطلبك الخاص.

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

نقاط نهاية httpbin الرئيسية

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

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

تعتبر نقطتي النهاية `/status/{codes}` و `/delay/{n}` هنا الأبطال الصامتون. إنهما يسمحان لك بفرض مسارات الأخطاء والاستجابات البطيئة عند الطلب، وهو أمر يصعب تفعيله ضد واجهة برمجة تطبيقات حقيقية. إذا كنت ترغب في إنشاء أجسام استجابة وهمية بدلاً من الأصداء، فقم بإقران httpbin بـ واجهة برمجة تطبيقات وهمية لبيانات الاختبار.

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

أسرع طريقة لتجربة httpbin هي باستخدام curl. أرسل طلب GET مع معلمة استعلام:

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

تحصل على كائن JSON يعرض `args`، و `headers` التي استقبلها الخادم، وعنوان IP `origin` الخاص بك. يؤكد ذلك أن عميلك أرسل ما توقعته.

لاختبار كيفية تعامل الكود الخاص بك مع جسم POST، أرسل بعض JSON:

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

يعكس httpbin `json` المحلل، و `data` الخام، والرؤوس، حتى تتمكن من التحقق من أن `Content-Type` والحمولة (payload) الخاصة بك وصلت سليمة.

الآن اجبر على حدوث خطأ لاختبار منطق إعادة المحاولة (retry logic) الخاص بك:

curl -i "https://httpbin.org/status/503"

تحصل على استجابة حقيقية `503 Service Unavailable`. وجه معالجة الأخطاء لعميلك نحو هذا وتأكد من أنه يعيد المحاولة أو يفشل بشكل صحيح. استبدل `/delay/5` لمحاكاة نقطة نهاية بطيئة وتحقق من إعدادات المهلة (timeout) الخاصة بك.

ليس عليك البقاء في الطرفية. يمكن لأي عميل REST الوصول إلى نفس عناوين URL هذه. إذا كنت تفضل سير عمل رسومي، الصق `https://httpbin.org/get` في Apidog، أرسل الطلب، وافحص الاستجابة مع تمييز بناء الجملة (syntax highlighting)، وسجل المحفوظات، ومتغيرات البيئة. هذا مفيد عندما تريد مقارنة الاستجابات عبر البيئات أو مشاركة اختبار مع زميل. للحصول على إعداد يعتمد على الطرفية أولاً، راجع عملاء TUI REST API هؤلاء.

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

يعد مثيل httpbin.org العام جيدًا للفحوصات لمرة واحدة، ولكنه قد يخضع لتحديد المعدل (rate-limited) أو يكون معطلاً عندما تحتاجه. تشغيل نسختك الخاصة يحل هذه المشكلة ويحافظ على خصوصية حركة مرور الاختبار الخاصة بك. يجعل صورة Docker الرسمية هذا مهمة من أمرَين.

اسحب الصورة وقم بتشغيلها:

docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin

تستمع الخدمة الآن على المنفذ 80. اضربها على `http://localhost/get` وستحصل على نفس سلوك الموقع العام، بدون زمن انتقال للشبكة وبدون حدود معدل مشتركة. هذا هو الإعداد الذي تريده في مسارات CI (التكامل المستمر)، حيث تهم الموثوقية ولا تريد الاعتماد على خدمة خارجية. يتم نشر الصورة على Docker Hub باسم kennethreitz/httpbin.

إذا كان المنفذ 80 مشغولًا على جهازك، فقم بتعيين منفذ مضيف مختلف، على سبيل المثال `docker run -p 8080:80 kennethreitz/httpbin`، ثم استخدم `http://localhost:8080/get`.

بدائل httpbin

يقوم httpbin بشيء واحد بشكل جيد، لكنه ليس الخيار الوحيد، وليس منصة اختبار كاملة. إليك بدائل صادقة اعتمادًا على ما تحتاجه.

Postman Echo. خدمة صدى مستضافة بنفس روح httpbin، يديرها Postman. تضرب `https://postman-echo.com/get` وتحصل على طلبك معكوسًا. يغطي GET و POST والمصادقة ونقاط النهاية المساعدة. انظر وثائق Postman Echo للقائمة الكاملة. إذا كان httpbin.org معطلاً، فإن Echo هو بديل قوي.

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

خدمات Mock. يعكس httpbin طلبك؛ ولا يعيد بيانات نطاق واقعية. عندما تحتاج إلى استجابات وهمية ولكن منظمة (قائمة بالمستخدمين، كائن طلب، نتائج مقسمة على صفحات)، استخدم خادم وهمي (mock server) بدلاً من ذلك. لدى Apidog محاكاة ذكية مدمجة تولد استجابات واقعية من المخطط الخاص بك، بحيث يمكن للواجهة الأمامية الخاصة بك التطوير مقابل نقطة نهاية قبل وجود الواجهة الخلفية.

Apidog كطبقة العميل والاختبار. httpbin هو هدف ترسل إليه الطلبات. Apidog هي الأداة التي ترسلها بها. إنها منصة عميل واختبار API كاملة: صمم نقاط النهاية، أرسل الطلبات، اكتب التأكيدات (assertions)، اربط الطلبات في سيناريوهات، وقم بتشغيلها في CI. ستستخدم Apidog للوصول إلى httpbin، أو لاستبداله بمجرد أن تتجاوز احتياجاتك مجرد صدى بسيط. الاثنان ليسا متكافئين؛ httpbin هو الخدمة الصغيرة، Apidog هو بيئة العمل المحيطة بها. عندما تكون مستعدًا للانتقال من استدعاءات curl المخصصة إلى اختبارات محفوظة وقابلة للتكرار، يتيح لك Apidog استيراد طلباتك الحالية وإضافة التأكيدات. لإجراء مسح أوسع للخيارات التي لا تتطلب تثبيتًا، راجع أدوات اختبار API المجانية عبر الإنترنت.

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

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

هل httpbin لا يزال قيد الصيانة؟ يعيش الكود المصدري في مستودع postmanlabs/httpbin GitHub ويتلقى بعض الاهتمام المستمر، على الرغم من أن الصيانة كانت متقطعة. نظرًا لأن httpbin.org يمكن أن يكون غير مستقر، فإن العديد من الفرق تقوم بتثبيت نسخة Docker مستضافة ذاتيًا لأي شيء مهم.

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

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

هل يمكنني اختبار معالجة الأخطاء باستخدام httpbin؟ نعم. استخدم `/status/{code}` لفرض أي رمز حالة، مثل `/status/500` أو `/status/429`، و `/delay/{n}` لمحاكاة الاستجابات البطيئة. هذه هي أنظف طريقة لتمرين منطق إعادة المحاولة والمهلة لعميلك.

الخلاصة

httpbin هي أداة صغيرة وحادة: وجه عميل HTTP إليها وشاهد طلبك ينعكس مرة أخرى. استخدم `/get` و `/post` لتأكيد ما ترسله، و `/status` و `/delay` لفرض مسارات الأخطاء، وصورة Docker لتشغيل نسخة خاصة في CI. عندما تحتاج إلى أكثر من مجرد صدى، استخدم المحاكاة الواقعية، ومجموعات الاختبار المحفوظة، والتأكيدات.

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

ممارسة تصميم API في Apidog

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