استدعاء خدمة خارجية من داخل برنامج نصي
الهدف
أن تجعل برنامجًا نصيًا على الخادم يستدعي شيئًا خارج المنصة — يأخذ دفعة، أو يخبر نظامًا آخر بأن سجلًا قد تغيّر، أو يرسل بريدًا إلى شخص ما — وأن يكون العنوان الذي يُستدعى إعدادًا يتحكم فيه مسؤول، لا سطرًا في برنامجك النصي.
الدالتان
كلتاهما متاحتان في خطوة إضافة الخادم وفي واجهة برمجية مخصّصة.
var answer = callService('par_payment_service', '{"reference":"ORD-1","amount":25}');
var sent = sendEmail('par_mail_service', { to: 'buyer@example.test', subject: 'Your order is paid', body: 'Thank you.' });
يمكن أن يكون الجسم نصًا، كما في الأعلى، أو كائنًا أو قائمة تُرسل بصيغة JSON: callService('par_payment_service', { reference: 'ORD-1', amount: 25 }) يرسل الشيء نفسه.
تُجيب callService بكائن:
| الخاصية | ما هي |
|---|---|
status | رمز حالة HTTP الذي ردّت به الخدمة |
ok | تساوي true للحالات من ٢٠٠ إلى ٢٩٩، ليكون الحال الشائع خاصيةً واحدة لا عملية حسابية |
body | ما ردّت به، كنص |
truncated | تساوي true إذا كان الرد أكبر من أن يُقرأ كاملًا |
الوسيط الأول اسم خدمة، لا عنوان
هذا هو الجزء الذي يفاجئ الناس، وهو التصميم كلّه.
'par_payment_service' هو الاسم المنطقي لمتغيّر بيئة. أنت تعلنه في حلّك، ويحدّد مسؤول قيمته
— أي نقطة النهاية — في كل بيئة. وعليه:
- يقول برنامجك النصي ماذا يستدعي، ولا يقول أبدًا أين؛
- تشير بيئة التطوير إلى بيئة اختبار وتشير بيئة الإنتاج إلى المزوّد الحقيقي، دون أي تغيير في الحل؛
- والبيئة التي لم يُضبط لها شيء لا تصل إلى أي مكان.
لا توجد عمدًا أي دالة تأخذ عنوان URL. فدالة كهذه تتيح لأي برنامج نصي في أي مستأجر أن يفتح اتصالًا إلى أي مكان كان، ولا تعوّض عن ذلك أي مراجعة للحلول بعد وقوعه.