كيف تُرسِلُ طلبًا إلى خدمةٍ أخرى
وصفةٌ لمهمّةٍ بعينِها: أن يكونَ برنامجُك طالبًا لا مُجيبًا. الدوالُّ مُعلَنةٌ في language-truth/builtins/http_client.yaml — ١٨ مدخلًا كلُّها مستقرّة.
أصغرُ طلبٍ كامل
sad
استورد شبكة
متغير المتصفح = أنشئ_متصفح()
حدد_الانتظار(المتصفح، 3000)
متغير الرد = اجلب(المتصفح، "http://127.0.0.1:8733/tasks")
إذا (هل_الرد_ناجح(الرد))
اطبع_سطر(رمز_الحالة(الرد))
اطبع_سطر(نص_الرد(الرد))
وإلا
اطبع_سطر("فشل: " + سبب_الفشل(المتصفح))
نهاية
تجاهل_الرد(الرد)
أغلق_متصفح(المتصفح)bash
sad-build عميل.ص -o عميل.exe
./عميل.exeوالخدمةُ حيّة (خادمُ المسارات يعملُ على ٨٧٣٣) — مخرَجٌ مقيس:
200
{"المهام":[]}والخدمةُ ميتة — المخرَجُ المقيسُ نفسُه بلا خادم:
فشل: HTTP request failed: Failed to connect to server (Error code: 10061)مِقبضانِ لا واحد
هل_الرد_ناجح تأخذُ مِقبضَ الردّ، وسبب_الفشل تأخذُ مِقبضَ المتصفّح. وتمريرُ المتصفّحِ إلى هل_الرد_ناجح قِيسَ أنّه يُرجِعُ «خطأ» على طلبٍ ناجحٍ تمامًا — فلا يحمرُّ البرنامجُ ولا يُترجَمُ خطأً، بل يكذبُ بصمت.
الأفعالُ الستّة
| الفعل | الدالّة | الوسائطُ المُعلَنة |
|---|---|---|
GET | اجلب(المتصفح، الرابط) | ٢ |
POST | أرسل(المتصفح، الرابط، الجسم) | ٣ |
PUT | استبدل(المتصفح، الرابط، الجسم) | ٣ |
PATCH | عدل_مورد(المتصفح، الرابط، الجسم) | ٣ |
DELETE | احذف_مورد(المتصفح، الرابط) | ٢ |
وكلُّها تُرجِعُ مِقبضَ ردّ يُقرأُ ثمّ يُحرَّرُ بـتجاهل_الرد.
ضبطُ المتصفّحِ قبلَ الطلب
sad
استورد شبكة
متغير المتصفح = أنشئ_متصفح()
حدد_الموقع(المتصفح، "http://127.0.0.1:8733")
حدد_الانتظار(المتصفح، 3000)
أضف_ترويسة(المتصفح، "Content-Type"، "text/plain; charset=utf-8")
سجل_دخول_برمز(المتصفح، "رمزي-السري")
متغير الرد = أرسل(المتصفح، "http://127.0.0.1:8733/tasks"، "غسل الصحون")
اطبع_سطر(رمز_الحالة(الرد))
اطبع_سطر(نص_الرد(الرد))
اطبع_سطر(معلومة_الرد(الرد، "Content-Type"))
تجاهل_الرد(الرد)
أغلق_متصفح(المتصفح)مخرَجٌ مقيسٌ على الخادمِ نفسِه:
201
أضيفت: غسل الصحون
text/plain| الدالّة | تفعل |
|---|---|
حدد_الموقع(المتصفح، الأصل) | أصلًا أساسيًّا |
حدد_الانتظار(المتصفح، مِلّي) | مهلةً بالمِلّي ثانية |
أضف_ترويسة(المتصفح، الاسم، القيمة) | ترويسةً تُرسَلُ مع كلِّ طلب |
سجل_دخول_برمز(المتصفح، الرمز) | ترويسةَ Bearer |
قراءةُ الرد
| الدالّة | ترجِعُ | مِقبضُها |
|---|---|---|
رمز_الحالة(الرد) | رمزَ الحالةِ العدديّ | الرد |
نص_الرد(الرد) | جسمَ الرد | الرد |
معلومة_الرد(الرد، الاسم) | ترويسةَ ردٍّ باسمِها | الرد |
هل_الرد_ناجح(الرد) | هل الحالةُ ناجحة | الرد |
هل_نجح(المتصفح) | هل نجحَ آخرُ طلب | المتصفّح |
سبب_الفشل(المتصفح) | نصَّ آخرِ خطأ | المتصفّح |
حرِّرْ ما تفتح
تجاهل_الرد لكلِّ ردٍّ، وأغلق_متصفح في النهاية. والمتصفّحُ الواحدُ يُعادُ استعمالُه لطلباتٍ متتالية.
حدودٌ تخصُّ هذه الصفحة
- لا HTTPS: المتصفّحُ على HTTP المجرَّد — حدٌّ مُعلَنٌ في حدودِ الويب. فالمثالانِ أعلاه على
127.0.0.1عمدًا. سبب_الفشلتُرجِعُ نصًّا إنجليزيًّا خامًّا من طبقةِ الشبكةِ لا رمزَ خطأٍ من كتالوجِ اللغة — كما في المخرَجِ المقيسِ أعلاه.