أي من هذه طريقة جيدة لطلب واجهة برمجة التطبيقات؟

StackOverflow https://stackoverflow.com/questions/3112452

  •  29-09-2019
  •  | 
  •  

سؤال

عند النظر إلى مكتبات API لـ Python ، يبدو أن هناك حوالي نصفها يستخدمون ببساطة:

response = urllib2.urlopen('https://www.example.com/api', data)

وحوالي النصف باستخدام:

connection = httplib.HTTPSConnection('www.example.com/api')
# ... rest omitted for simplicity

أميل إلى التفكير في أن الإصدار الثاني هو "أكثر برودة" (أنا متحيز نحو نهج أكثر في معظم الأشياء).

هل هناك فائدة أو سبب لاستخدام واحد على الآخر. أو ، هل أفتقد شيئًا على طول الطريق. أشك في ذلك urllib2.urlopen الاستخدامات HTTPSConnection في تنفيذها ، لذلك ربما يكون المرء ببساطة أقل ترميزًا نيابة عني. أيًا كان الطريق ، أحب بعض الملاحظات. شكرًا.

هل كانت مفيدة؟

المحلول

نعم، urllib2 الاستخدامات HTTPSConnection (أو أي نوع من التواصل مناسب للبروتوكول) في تنفيذه. إنه في الأساس مجرد اختصار لفعل الشيء الأكثر شيوعًا الذي يفعله الناس معه httplib.

urllib2 يحتوي أيضًا على بعض التعليمات البرمجية للتعامل مع أشياء مثل إعادة التوجيه وطلبات المصادقة ، كل الأشياء التي قد تضطر إلى الترميز يدويًا إذا كنت تفعل ذلك مع عادي httplib.

تعديل: استجابةً لتعليق مايكل ، إذا كنت تتساءل عن الكائن مقابل البيانات ... فهذا يعتمد نوعًا ما على ما ستفعله به. إذا كنت بحاجة إلى كائن الاتصال (على سبيل المثال ، للقيام بشيء مميز معه ، وربما اتصال محافظ) ، فاحد بالتأكيد ، واستخدم واستخدم ملف httplib الطريق وإرجاع كائن الاتصال. ولكن إذا كنت تحاول فقط الحصول على البيانات ، فما عليك سوى الحصول على البيانات وإعادتها. إذا كنت تحب OOP ، فاعلم أن كل شيء في بيثون من الناحية الفنية هو كائن ؛ ما تحصل عليه urllib2.urlopen هو كائن يشبه الملف والذي يحتوي على طرق لاسترداد قيمته ككائن سلسلة أو كقائمة من الأسطر (أيضًا كائنات السلسلة). أعتقد أن معظم مبرمجي Python سوف يعتبرون ذلك مضيعة للاستخدام httplib في الحالة الأخيرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top