Skip to content

كيف تُرسِلُ طلبًا إلى خدمةٍ أخرى

وصفةٌ لمهمّةٍ بعينِها: أن يكونَ برنامجُك طالبًا لا مُجيبًا. الدوالُّ مُعلَنةٌ في 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 عمدًا.
  • سبب_الفشل تُرجِعُ نصًّا إنجليزيًّا خامًّا من طبقةِ الشبكةِ لا رمزَ خطأٍ من كتالوجِ اللغة — كما في المخرَجِ المقيسِ أعلاه.

مُرخَّص بموجب رخصة MIT