تقنية

Request في بايثون: لماذا تعطي بيانات فارغة POST؟

غياب البيانات يعطي GET
نتيجة الكائن الأول. [1] [2]

نجهز كائنين لنطاق مؤلف دون فتح الرابط. [1] [2]

الخلاصة السريعة

لأن الاختيار الافتراضي يفحص هل البيانات None، لا هل طولها صفر. [1] [2]

  • None يعطي GET في مثالنا. [1] [2]
  • البيانات b'' تعطي POST. [1] [2]
  • get_method يعيد اسم الطريقة، لا استجابة خادم. [1] [2]
  • اختيار method صراحة يغير النتيجة؛ اختبرنا HEAD. [1] [2]
  • اختبرنا 3.12.14 دون إرسال طلب. [1] [2]

المثال

from urllib.request import Request
a=Request('https://own.invalid/',data=None)
b=Request('https://own.invalid/',data=b'')
print(a.get_method())
print(b.get_method())

[1] [2]

الفارغ والغائب

البيانات الفارغة كائن بايتات موجود، بخلاف None. لذا يطبع المثال GET ثم POST. لم نستدع urlopen، ولم نفحص وجود صفحة أو وصول جسم طلب. [1] [2]

بايتات فارغة تعطي POST
نتيجة الكائن الثاني. [1] [2]

الاختيار الصريح

مع data=b'' وmethod='HEAD' أعاد اختبارنا HEAD. هذه خاصية الكائن الذي أنشأناه؛ لا تثبت قبول خادم أو إرسال رؤوس أو متابعة تحويل. لا نعممها على أصناف مشتقة تغير الطريقة. [1] [2]

المراجع

  1. Python: urllib.request
  2. CPython3.12.14: urllib/request.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.