مكتبة http — عميل وخادم HTTP
مكتبة http توفر أدوات متكاملة للتعامل مع بروتوكول HTTP/HTTPS. تشمل عميل HTTP لإرسال الطلبات (GET, POST, PUT, DELETE)، وخادم HTTP لبناء واجهات برمجية (APIs)، ودعم WebSocket للاتصال في الوقت الحقيقي، مع دعم كامل لتشفير HTTPS.
استورد http من "stdlib/http"
# إرسال طلب GET
متغير رد = انتظر http.احصل("https://api.example.com/data")
اطبع_سطر("الحالة: " + رد.الحالة)
اطبع_سطر("الجسم: " + رد.نص())ملخص الدوال
عميل HTTP
| الدالة | الوصف |
|---|---|
http.احصل(رابط، ترويسات؟) | طلب GET |
http.أرسل(رابط، جسم، ترويسات؟) | طلب POST |
http.حدّث(رابط، جسم، ترويسات؟) | طلب PUT |
http.احذف(رابط، ترويسات؟) | طلب DELETE |
http.طلب(خيارات) | طلب مخصص |
خادم HTTP
| الدالة | الوصف |
|---|---|
http.خادم(منفذ) | إنشاء خادم |
خادم.على(مسار، معالج) | تسجيل مسار |
خادم.شغّل() | تشغيل الخادم |
خادم.أوقف() | إيقاف الخادم |
أدوات مساعدة
| الدالة | الوصف |
|---|---|
http.ترميز_رابط(نص) | ترميز URL |
http.فك_ترميز_رابط(نص) | فك ترميز URL |
عميل HTTP
http.احصل(رابط، ترويسات؟) — طلب GET
تُرسل طلب HTTP GET إلى الرابط المحدد وتُرجع كائن الاستجابة. الطلب غير متزامن ويجب استخدام انتظر معه. يمكن تمرير خريطة ترويسات اختيارية. كائن الاستجابة يحتوي على الحالة (رمز الحالة HTTP)، الترويسات، والجسم.
استورد http من "stdlib/http"
# جلب بيانات أوقات الصلاة من API
متغير رد = انتظر http.احصل("https://api.aladhan.com/v1/timingsByCity?city=Makkah&country=SA")
إذا (رد.الحالة == 200)
اطبع_سطر("تم جلب أوقات الصلاة بنجاح")
اطبع_سطر(رد.نص())
وإلا
اطبع_سطر("خطأ: " + رد.الحالة)
نهايةhttp.أرسل(رابط، جسم، ترويسات؟) — طلب POST
تُرسل طلب HTTP POST مع بيانات في جسم الطلب. مفيد لإرسال بيانات جديدة إلى الخادم مثل تسجيل مستخدم أو إضافة سجل.
استورد http من "stdlib/http"
استورد json من "stdlib/json"
# تسجيل مستخدم جديد
متغير بيانات_المستخدم = {
"الاسم": "عبدالرحمن الفقيه"،
"البريد": "abdulrahman@example.com"،
"المدينة": "جدة"
}
متغير رد = انتظر http.أرسل(
"https://api.example.com/users"،
json.نص(بيانات_المستخدم)،
{"Content-Type": "application/json"}
)
إذا (رد.الحالة == 201)
اطبع_سطر("تم التسجيل بنجاح!")
نهايةhttp.حدّث(رابط، جسم، ترويسات؟) — طلب PUT
تُرسل طلب PUT لتحديث بيانات موجودة على الخادم.
استورد http من "stdlib/http"
استورد json من "stdlib/json"
# تحديث بيانات طالب
متغير التحديث = {"المعدل": 3.92، "الحالة": "متفوق"}
متغير رد = انتظر http.حدّث(
"https://api.example.com/students/1446023"،
json.نص(التحديث)،
{"Content-Type": "application/json"}
)
اطبع_سطر("حالة التحديث: " + رد.الحالة)http.احذف(رابط، ترويسات؟) — طلب DELETE
تُرسل طلب DELETE لحذف مورد من الخادم.
استورد http من "stdlib/http"
متغير رد = انتظر http.احذف("https://api.example.com/posts/42")
إذا (رد.الحالة == 200)
اطبع_سطر("تم الحذف بنجاح")
نهايةخادم HTTP
http.خادم(منفذ) — إنشاء خادم
تُنشئ خادم HTTP يستمع على المنفذ المحدد. بعد الإنشاء، استخدم على() لتسجيل المسارات ثم شغّل() لبدء الاستماع.
استورد http من "stdlib/http"
استورد json من "stdlib/json"
# إنشاء API لأوقات الصلاة
متغير خادم = http.خادم(3000)
# الصفحة الرئيسية
خادم.على("/"، لامدا(طلب، رد)
رد.أرسل("مرحباً بك في واجهة أوقات الصلاة")
نهاية)
# قائمة المدن
خادم.على("/مدن"، لامدا(طلب، رد)
متغير المدن = ["مكة"، "المدينة"، "الرياض"، "جدة"، "الدمام"]
رد.أرسل_json(المدن)
نهاية)
# أوقات صلاة مدينة محددة
خادم.على("/صلاة/:مدينة"، لامدا(طلب، رد)
متغير المدينة = طلب.معامل("مدينة")
متغير الأوقات = {
"الفجر": "04:30"،
"الظهر": "12:15"،
"العصر": "15:30"،
"المغرب": "18:45"،
"العشاء": "20:15"
}
رد.أرسل_json({"المدينة": المدينة، "الأوقات": الأوقات})
نهاية)
اطبع_سطر("الخادم يعمل على المنفذ 3000")
خادم.شغّل()أدوات مساعدة
http.ترميز_رابط(نص) / http.فك_ترميز_رابط(نص)
ترميز وفك ترميز النصوص لاستخدامها ضمن عناوين URL. مهم عند استخدام نصوص عربية في الروابط.
استورد http من "stdlib/http"
متغير النص = "مكة المكرمة"
متغير المُرمَّز = http.ترميز_رابط(النص)
اطبع_سطر(المُرمَّز) # مكة%20المكرمة
متغير الأصلي = http.فك_ترميز_رابط(المُرمَّز)
اطبع_سطر(الأصلي) # مكة المكرمةمثال شامل
استورد http من "stdlib/http"
استورد json من "stdlib/json"
# تطبيق عملي: جلب بيانات من API وعرضها
غير_متزامن دالة رئيسية()
اطبع_سطر("=== دليل المساجد ===")
# جلب قائمة المساجد
متغير رد = انتظر http.احصل("https://api.example.com/mosques?city=riyadh")
إذا (رد.الحالة == 200)
متغير المساجد = json.حلل(رد.نص())
اطبع_سطر("عدد المساجد: " + حجم_مصفوفة(المساجد))
اطبع_سطر("")
لكل مسجد في المساجد
اطبع_سطر("🕌 " + مسجد["الاسم"])
اطبع_سطر(" الحي: " + مسجد["الحي"])
اطبع_سطر(" السعة: " + لنص(مسجد["السعة"]))
اطبع_سطر("")
نهاية
وإلا
اطبع_سطر("خطأ في جلب البيانات: " + رد.الحالة)
نهاية
نهاية