الدرس 40 من 56 · احترف بايثون

بايثون تتكلم مع العالم: طلب ويب و API

لحد الآن برامجك تشتغل داخل جهازك. لكن بايثون تقدر ترسل رسائل للإنترنت وتستلم ردوداً! مثل ما تتصل بمطعم وتطلب، والرد يوصلك.

كيف؟ بـ urllib المدمجة — نسأل موقعاً عن معلومات ونستلم الجواب:

from urllib.request import urlopen

response = urlopen("https://api.github.com")
text = response.read().decode()
print(text[:200])   # أول 200 حرف من الجواب

الموقع يرد غالباً بصيغة JSON — اللي تعرفها من درس المهارات! نجمع الدرسين:

import json
from urllib.request import urlopen

response = urlopen("https://api.github.com")
data = json.loads(response.read().decode())
print(data["current_user_url"])

وش صار؟ رسلنا طلباً، استلمنا نص JSON، وحولناه قاموس بايثون بloads — ومن لحظتها نستخدم البيانات كأنها محلية عندنا!

وش معنى API؟ نادل الموقع: المواقع الكبيرة تعرض قائمة طلبات جاهزة (طقس، أسعار، لقطات، ترجمات) — برنامجك يطلب منها برمجياً ويرد عليه. حرفياً: Application Programming Interface — الواجهة اللي تطلب منها البرامج.

وخبر مهم من درس الأمان: لا تثق بالردود! الرد ممكن يتأخر أو يفشل — فنلف الطلب بدرعنا:

try:
    response = urlopen("https://api.github.com")
    print("وصل الجواب!")
except Exception:
    print("الشبكة تعبت — جرب بعدين")

بهذا الدرس انفتح على برنامجك العالم: طقس الغد، تحويل عملات، بيانات نجوم — كلها صارت على بعد طلب واحد.

اختبار سريع للدرس

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

1. وش معنى API ببساطة؟
2. ليش نحتاج json.loads بعد urlopen؟
3. ليش نلف طلب الشبكة بـ try/except؟
الدرس 39 الدرس 41 — مراجعة 1: الأساسيات وهياكل البيانات (الوحدات 1-2)
FeLiXFeLiX AI — مساعد المنصتين