يمكن أن يكون التعامل مع طلبات واستجابات API في بايثون نقطة تحول لمشاريعك. سواء كنت تبني تطبيق ويب، تطبيق موبايل، أو حتى سكربت بسيط، ففهم كيفية التفاعل مع APIs هو أمر حيوي. في هذا الدليل الشامل، سوف نغوص عميقًا في عالم طلبات واستجابات بايثون، ونقدم لك الأدوات التي تحتاجها لتصبح خبيرًا في APIs. ولا تنسَ تحميل Apidog مجانًا - سيجعل تطوير واختبار API لديك سهلاً!
مقدمة عن APIs
أول الأشياء أولاً، دعنا نتحدث عما هو API. API هو اختصار لواجهة برمجة التطبيقات. إنه مجموعة من القواعد التي تسمح للكيانات البرمجية المختلفة بالتواصل مع بعضها البعض. تخيل أنه نادل يأخذ طلبك (طلبك) ويعيد طعامك (الاستجابة). APIs في كل مكان – من تطبيقات الطقس إلى منصات التواصل الاجتماعي.
تسمح APIs للمطورين بالوصول إلى وظائف برامج البرمجيات الأخرى. يمكن أن يتراوح ذلك من مهام بسيطة، مثل استرجاع البيانات من خادم ويب، إلى عمليات أكثر تعقيدًا، مثل التفاعل مع نموذج تعلم الآلة مستضاف على خدمة سحابية.
لماذا استخدام APIs؟
يمكن أن يوفر لك استخدام APIs الكثير من الوقت والجهد. بدلاً من إعادة اختراع العجلة، يمكنك الاستفادة من الخدمات والبيانات الموجودة. بالإضافة إلى ذلك، يسمح لتطبيقاتك بأن تكون أكثر تنوعًا وتكاملاً.
مصطلحات رئيسية
قبل أن نبدأ، إليك بعض المصطلحات الأساسية التي يجب أن تعرفها:
- نقطة النهاية: عنوان URL حيث يمكن الوصول إلى API.
- طلب: الرسالة المرسلة إلى API لتنفيذ إجراء.
- استجابة: الرسالة التي يرسلها API مع نتيجة الطلب.
- رمز الحالة: رمز يشير إلى نتيجة الطلب (مثل 200 للنجاح، 404 للخطأ).
فهم طلبات بايثون
مكتبة requests في بايثون هي أداة قوية لإجراء طلبات HTTP. إنها بسيطة، لكنها مرنة جدًا، مما يسمح لك بالتفاعل مع APIs بسهولة. لنبدأ بتثبيت مكتبة requests.
pip install requests
الآن بعد أن قمنا بتثبيت المكتبة، دعنا ننتقل إلى إجراء طلب API الأول.

إجراء طلب API الأول الخاص بك
لإجراء طلب API، ستحتاج إلى نقطة نهاية API. في هذا المثال، سنستخدم API JSONPlaceholder، وهو API وهمي مجاني عبر الإنترنت REST API للاختبار والنمذجة.
إليك مثال بسيط حول كيفية إجراء طلب GET:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
response = requests.get(url)
print(response.status_code)
print(response.json())
في هذا المثال، نقوم بإرسال طلب GET إلى نقطة نهاية /posts. تقوم دالة requests.get بإرسال الطلب، ويتم تخزين الاستجابة في المتغير response. ثم نقوم بطباعة رمز الحالة والاستجابة بتنسيق JSON.
فهم الاستجابة
يحتوي كائن الاستجابة على جميع المعلومات التي أعادها الخادم. إليك بعض الخصائص المفيدة لكائن الاستجابة:
status_code: رمز الحالة HTTP الذي يعيده الخادم.headers: قاموس لرؤوس HTTP.text: جسم الاستجابة الخام كسلسلة نصية.json(): طريقة تقوم بتحليل جسم الاستجابة كـ JSON.
إجراء طلب POST
أحيانًا، ستحتاج إلى إرسال بيانات إلى API. هنا تأتي طلبات POST. إليك مثال:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post(url, json=data)
print(response.status_code)
print(response.json())
في هذا المثال، نقوم بإرسال طلب POST إلى نقطة نهاية /posts مع بعض بيانات JSON. تقوم دالة requests.post بإرسال الطلب، ويتم التعامل مع الاستجابة بطريقة مماثلة لطلب GET.

التعامل مع استجابات API
الآن بعد أن أجرينا بعض الطلبات، دعنا نتحدث عن التعامل مع الاستجابات. من المهم التحقق من رمز الحالة لضمان نجاح الطلب.
التحقق من رموز الحالة
إليك مثال بسيط حول كيفية التحقق من رمز الحالة:
import requests
url = 'https://jsonplaceholder.typicode.com/posts/1'
response = requests.get(url)
if response.status_code == 200:
print('نجاح!')
print(response.json())
else:
print('خطأ:', response.status_code)
في هذا المثال، نتأكد مما إذا كان رمز الحالة هو 200، مما يشير إلى النجاح. إذا كانت الطلب ناجحًا، نطبع الاستجابة بتنسيق JSON. وإلا، نطبع رسالة خطأ مع رمز الحالة.
تحليل استجابات JSON
تقوم معظم APIs بإرجاع البيانات بتنسيق JSON. تسهل طريقة response.json() تحليل بيانات JSON. إليك مثال:
import requests
url = 'https://jsonplaceholder.typicode.com/posts/1'
response = requests.get(url)
if response.status_code == 200:
data = response.json()
print('العنوان:', data['title'])
print('النص:', data['body'])
else:
print('خطأ:', response.status_code)
في هذا المثال، نقوم بتحليل الاستجابة بتنسيق JSON وطباعة حقول title وbody.
التعامل مع الأخطاء باستخدام requests
يعد التعامل مع الأخطاء أمرًا حيويًا عند العمل مع APIs. تحتاج إلى أن تكون مستعدًا لمجموعة متنوعة من السيناريوهات، مثل مشكلات الشبكة، ونقاط النهاية غير الصحيحة، وأخطاء الخادم.
التعامل مع أخطاء الشبكة
يمكن أن تحدث أخطاء الشبكة عندما يكون الخادم غير متاح أو تكون الاتصال مفقودًا. توفر مكتبة requests دعمًا مدمجًا للتعامل مع هذه الأخطاء باستخدام الاستثناءات.
إليك مثال:
import requests
url = 'https://jsonplaceholder.typicode.com/posts/1'
try:
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print("خطأ HTTP:", errh)
except requests.exceptions.ConnectionError as errc:
print("خطأ في الاتصال:", errc)
except requests.exceptions.Timeout as errt:
print("خطأ في المهلة:", errt)
except requests.exceptions.RequestException as err:
print("عذرًا: شيء آخر", err)
في هذا المثال، نستخدم كتلة try-except لالتقاط أنواع مختلفة من الأخطاء. تقوم طريقة raise_for_status() بإثارة خطأ HTTP إذا لم يكن رمز الحالة هو 200.
التعامل مع أخطاء الخادم
تشير أخطاء الخادم (رموز الحالة 500-599) إلى وجود مشكلة على جانب الخادم. إليك مثال حول كيفية التعامل مع أخطاء الخادم:
import requests
url = 'https://jsonplaceholder.typicode.com/invalid-endpoint'
response = requests.get(url)
if response.status_code >= 500:
print('خطأ في الخادم:', response.status_code)
elif response.status_code == 404:
print('غير موجود:', response.status_code)
elif response.status_code == 400:
print('طلب غير صالح:', response.status_code)
else:
print('خطأ آخر:', response.status_code)
في هذا المثال، نقوم بالتحقق مما إذا كان رمز الحالة في نطاق 500، مما يشير إلى خطأ في الخادم. نحن أيضًا نتعامل مع 404 (غير موجود) و400 (طلب غير صالح) خطأ.
نصائح وحيل متقدمة
الآن بعد أن قمنا بتغطية الأساسيات، دعنا نستكشف بعض النصائح والحيل المتقدمة لجعل حياتك أسهل عند العمل مع APIs في بايثون.
استخدام معلمات الاستعلام
تسمح لك معلمات الاستعلام بتمرير البيانات إلى API كجزء من عنوان URL. إليك مثال:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
params = {'userId': 1}
response = requests.get(url, params=params)
print(response.status_code)
print(response.json())
في هذا المثال، نقوم بتمرير معلمة userId إلى نقطة النهاية /posts. تأخذ معلمة params في دالة requests.get قاموسًا من معلمات الاستعلام.
استخدام الرؤوس
تستخدم الرؤوس لإرسال معلومات إضافية مع الطلب. إليك مثال:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-Type': 'application/json'}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
في هذا المثال، نضبط رأس Content-Type إلى application/json. تأخذ معلمة headers في دالة requests.get قاموسًا من الرؤوس.
المصادقة
تتطلب العديد من APIs المصادقة. تدعم مكتبة requests طرق مصادقة مختلفة، بما في ذلك المصادقة الأساسية و OAuth. إليك مثال حول كيفية استخدام المصادقة الأساسية:
import requests
from requests.auth import HTTPBasicAuth
url = 'https://api.example.com/user'
auth = HTTPBasicAuth('username', 'password')
response = requests.get(url, auth=auth)
print(response.status_code)
print(response.json())
في هذا المثال، نستخدم المصادقة الأساسية للتوثيق مع API. تأخذ معلمة auth في دالة requests.get مثيلًا من HTTPBasicAuth.
كيفية اختبار طلب POST في بايثون
Apidog هي أداة قوية لاختبار APIs. تتيح لك إنشاء وحفظ طلبات API، وتنظيمها في مجموعات، ومشاركتها مع فريقك.
إليك كيفية استخدام Apidog لاختبار طلب POST الخاص بك:
- فتح Apidog وإنشاء طلب جديد.

2. ضبط طريقة الطلب على POST.

3. إدخال عنوان URL للمصدر الذي تريد تحديثه. أضف أي رؤوس أو معلمات إضافية تريد تضمينها ثم انقر على زر "إرسال" لإرسال الطلب.

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

الخاتمة
في هذا الدليل، قمنا بتغطية الأساسيات حول التعامل مع طلبات واستجابات API في بايثون. نظرنا في كيفية إجراء طلبات GET وPOST، والتعامل مع الاستجابات، والتعامل مع الأخطاء. كما استكشفنا بعض النصائح والحيل المتقدمة لجعل حياتك أسهل. تذكر، APIs هي أداة قوية يمكن أن تفتح عالمًا من الاحتمالات لمشاريعك. لذا، انطلق، جرب، وابدأ في بناء أشياء مذهلة!
ولا تنسَ تحميل Apidog مجانًا لتسهيل تطوير واختبار API لديك. برمجة سعيدة!
