العمل مع واجهات البرمجة
مكتبة Requests
3 دقيقة للقراءة
مكتبة requests تجعل استدعاءات HTTP بسيطة وبأسلوب بايثون. إنها الأساس للتفاعل مع واجهات الويب.
التثبيت
pip install requests
إجراء طلبات GET
import requests
# طلب GET بسيط
response = requests.get("https://api.github.com/users/octocat")
# تحقق من النجاح
if response.status_code == 200:
data = response.json()
print(data["name"])
إجراء طلبات POST
import requests
import json
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Authorization": "Bearer sk-your-key",
"Content-Type": "application/json"
}
data = {
"model": "gpt-4",
"messages": [
{"role": "user", "content": "مرحباً!"}
]
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result["choices"][0]["message"]["content"])
كائن الاستجابة
response = requests.get("https://api.example.com/data")
# معلومات الحالة
response.status_code # 200
response.ok # True (إذا كان 200-299)
response.reason # "OK"
# المحتوى
response.text # استجابة نصية خام
response.json() # تحليل كـ JSON (يرجع قاموس)
response.content # بايتات خام
# الترويسات
response.headers # قاموس ترويسات الاستجابة
response.headers["Content-Type"]
معالجة الأخطاء
import requests
try:
response = requests.get(url, timeout=10)
response.raise_for_status() # يرفع استثناء لـ 4xx/5xx
data = response.json()
except requests.Timeout:
print("انتهت مهلة الطلب")
except requests.HTTPError as e:
print(f"خطأ HTTP: {e}")
except requests.RequestException as e:
print(f"فشل الطلب: {e}")
الخيارات الشائعة
# المهلة (مهمة للموثوقية)
response = requests.get(url, timeout=30)
# معاملات الاستعلام
response = requests.get(url, params={"page": 1, "limit": 10})
# ينتج: url?page=1&limit=10
# ترويسات مخصصة
response = requests.get(url, headers={"User-Agent": "MyApp/1.0"})
# جسم JSON (يُسلسل تلقائياً)
response = requests.post(url, json={"key": "value"})
مثال عملي للذكاء الاصطناعي
import requests
import os
def chat_completion(prompt, model="gpt-4"):
"""إجراء طلب إكمال محادثة إلى OpenAI."""
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}",
"Content-Type": "application/json"
}
data = {
"model": model,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.7
}
response = requests.post(url, headers=headers, json=data, timeout=60)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"]
# الاستخدام
answer = chat_completion("ما هو بايثون؟")
print(answer)
بعد ذلك، سنتعلم أنماط مصادقة API الصحيحة. :::