أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
ما هو إصدار Node.js المتوافق مع Apigee Edge؟
يتوافق Edge حاليًا مع الإصدار 0.10.32 من Node.js.
ما هي وحدات Node.js العادية المتوافقة مع Edge؟
استخدِم الجدول التالي لتحديد وحدات Node.js العادية المضمّنة في Edge. في بعض الحالات، لا تتوفّر الوحدات المضمّنة إلا بشكل جزئي. هذه الوحدات مدمجة في Node.js.| الوحدة | الحالة | ملاحظات |
|---|---|---|
assert |
متاح | |
buffer |
متاح | |
child_process |
محدود | سيتم عرض استثناء في حال محاولة إنشاء عملية فرعية. ومع ذلك، يمكن استخدام "fork" لإنشاء نصوص برمجية فرعية. |
cluster |
غير مفعّل | تعرض الطريقة cluster.isMaster القيمة "صحيح" دائمًا، ولا يتم تنفيذ الطرق الأخرى. يتم نشر نسخة واحدة من كل نص برمجي Node.js إلى كل معالج رسائل Edge. |
crypto |
متاح | |
dns |
متاح | |
domain |
متاح | |
dgram |
محدود | لن تتمكّن تطبيقات Node.js في بيئة Apigee من الوصول إلى الخدمات على الإنترنت عبر بروتوكول UDP بسبب بنية الشبكة. |
events |
متاح | |
fs |
محدود | يقتصر الوصول إلى نظام الملفات على الدليل الذي تم تشغيل البرنامج النصي منه، أي الدليل /resources/node. يمكن أن تقرأ نصوص Node.js البرمجية الملفات وتكتبها داخل هذا الدليل، مثلاً كمساحة مؤقتة، ولكن لا توجد ضمانات بشأن مدة بقاء الملفات. |
http |
متاح | يتم تحديد المضيف الظاهري والمسار للطلبات الواردة في خادم وكيل API، وليس من خلال وحدة HTTP. لمزيد من المعلومات، يُرجى الاطّلاع على التعرّف على إمكانية استخدام وحدتَي http وhttps. |
https |
متاح | يتصرف خادم "https" بشكل مطابق لخادم "http". يمكنك الاطّلاع على مقالة "التعرّف على إمكانية استخدام وحدتَي http وhttps" للحصول على مزيد من المعلومات. |
module |
متاح | |
net |
محدود | ستؤدي محاولات الاستماع إلى اتصالات بروتوكول التحكم في الإرسال الواردة إلى إنشاء استثناء. |
path |
متاح | |
module |
متاح | |
process |
التوافق الجزئي | لا تتوفّر وظائف لمعالجة رقم تعريف المستخدم والانتساب في المجموعة ودليل العمل. |
punycode |
متاح | |
querystring |
متاح | |
readline |
غير مفعّل | لا يوجد إدخال موحّد للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
repl |
غير مفعّل | لا يوجد إدخال موحّد للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
module |
متاحة | |
STDIO |
متاح |
يتم توجيه الإخراج والخطأ العاديين إلى ملف سجلّ ضمن البنية الأساسية لبرنامج Apigee Edge. يمكنك عرض هذه السجلات من خلال النقر على الزر سجلات Node.js في واجهة مستخدم إدارة Apigee Edge لخادم وكيل واجهة برمجة التطبيقات. لا يوجد إدخال موحّد للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. ومع ذلك، يمكنك تمرير وسيطات باستخدام عنصر ScriptTarget الخاص بـ TargetEndpoint. راجِع الإعداد المتقدّم لـ ScriptTarget للحصول على مزيد من المعلومات. |
stream |
متاح | |
string_decoder |
متاح | |
timers |
متاحة | |
tls |
متاح | تعمل مَعلمات بروتوكول أمان طبقة النقل (TLS) بالطريقة نفسها التي تعمل بها في Node.js العادي. راجِع استخدام وحدة Node.js لبروتوكول أمان طبقة النقل (SSL) على Apigee Edge للحصول على التفاصيل. |
tty |
غير مفعّل | لا يوجد إدخال موحّد للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. |
url |
متاح | |
util |
متاح | |
vm |
متاح | |
zlib |
متاح |
وحدات إضافية متوافقة
يسرد هذا القسم وحدات إضافية غير متوافقة مع Node.js العادي، ولكنها متوافقة مع Trireme وTrireme التي تعمل على Apigee Edge. Trireme هي حاوية Node.js مفتوحة المصدر تعمل على Apigee Edge. وهي مصمَّمة لتشغيل نصوص Node.js البرمجية داخل آلة Java الافتراضية (JVM). تتوفّر كل هذه الوحدات على NPM.
| الوحدة | الوصف |
|---|---|
| apigee-access | تتيح تطبيقات Node.js التي تعمل على منصة Apigee Edge طريقة للوصول إلى وظائف خاصة بـ Apigee. يمكنك استخدام هذه الوحدة النمطية لإجراء ما يلي: الوصول إلى متغيرات التدفق وتعديلها، واسترداد البيانات من وحدة التخزين الآمنة، واستخدام خدمات ذاكرة التخزين المؤقت على Edge والحصة وبروتوكول OAuth. راجِع أيضًا استخدام وحدة apigee-access. |
| trireme-support | تتيح لتطبيقات Node.js الاستفادة من الميزات الخاصة بـ Trireme. في الوقت الحالي، تتوفّر ميزة واحدة فقط، وهي تحميل وحدات Node.js البرمجية المضمّنة في Java. ملاحظة: loadJars غير متاح في Edge Cloud. |
| trireme-xslt | تعرض هذه السمة تجريدًا لمعالجة XLST. وهي مصمَّمة خصيصًا لمنصة Trireme للسماح بمعالجة XSLT بكفاءة عند تشغيل تطبيقات Node.js على Java. |
| trireme-jdbc | يتيح الوصول إلى JDBC من Node.js. ملاحظة: لا تتوفّر هذه الميزة في "الحوسبة الطرفية". بالنسبة إلى Edge Private Cloud، يمكنك وضع ملفات JDPC JAR في مسار الفئة واستخدام هذه الوحدة. |
التوافق مع وحدات Node.js الشائعة الاستخدام
القيود المفروضة على نصوص Node.js البرمجية
يُرجى العِلم أنّ Edge يفرض قيودًا معيّنة على نصوص Node.js البرمجية، مثل ما يلي:
- لا يمكن لتطبيقات Node.js في بيئة Apigee Edge الوصول إلى الخدمات على الإنترنت عبر بروتوكول UDP بسبب بنية شبكة Edge.
- يقتصر الوصول إلى نظام الملفات على الدليل الذي تم تشغيل نص Node.js فيه، أي الدليل /resources/node. يمكن لنصوص Node.js البرمجية قراءة الملفات وكتابتها في هذا الدليل، مثلاً كمساحة مؤقتة، ولكن لا توجد ضمانات بشأن مدة بقاء الملفات.
- تؤدي محاولات الاستماع إلى اتصالات TCP الواردة إلى إنشاء استثناء.
- لا تتوفّر وظائف لتعديل رقم تعريف المستخدم والانتساب في المجموعة ودليل العمل.
- بالنسبة إلى الإدخال العادي، يقتصر الأمر على تمرير الوسيطات باستخدام عنصر ScriptTarget في TargetEndpoint. لمزيد من المعلومات، راجِع الإعدادات المتقدّمة
لـ ScriptTarget.
- بالنسبة إلى الإخراج العادي، يقتصر استخدامك على زر "سجلات Node.js" في واجهة مستخدم إدارة Edge للوكيل. يمكنك أيضًا استخدام الأمر "apigeetool getlogs". لمزيد من المعلومات، اطّلِع على نشر تطبيق Node.js مستقل.
- الوحدات التي تعتمد على الرمز البرمجي الأصلي غير متاحة.
- لا تتوافق الوحدات التي تعتمد على ميزات EcmaScript 6، مثل Promises وGenerators.
- لا تتوافق علامات وقت التشغيل Node.js، مثل "harmony-proxies".
ضبط قيود اتصال عناوين IP على Edge for Private Cloud
يمكن أن تحظر Edge for Private Cloud وصول رمز Node.js إلى عناوين IP التي تبدأ بـ "10."، "192.168"، والمضيف المحلي. إذا حاولت الوصول إلى عناوين IP هذه، سيظهر لك خطأ بالشكل التالي:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
يمكنك تعديل هذه القيود من خلال ضبط السمة conf_nodejs_connect.ranges.denied في الملف message-processors.properties لكل معالج رسائل. تكون القيمة التلقائية لهذه السمة كما يلي:
- Edge 4.17.05 والإصدارات الأقدم: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 والإصدارات الأحدث: conf_nodejs_connect.ranges.denied= (ما يعني عدم وجود قيود)
لضبط هذه السمة، اتّبِع الخطوات التالية:
- افتح ملف message-processor.properties في محرِّر. إذا لم يكن الملف متوفّرًا، أنشئه:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - اضبط السمة على القيمة المطلوبة. على سبيل المثال، لرفض الوصول إلى localhost فقط:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - احفظ التغييرات.
- تأكَّد من أنّ ملف الخصائص يملكه المستخدم "apigee":
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - أعِد تشغيل "معالج الرسائل" (Message Processor):
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
فهم التوافق مع وحدتَي http وhttps
يجب أن تستخدم جميع تطبيقات Node.js التي تعمل في Apigee Edge الوحدة http أو https للاستماع إلى الطلبات الواردة. إذا أردت نشر نص برمجي لا يستمع إلى الطلبات الواردة، سيتم تنفيذه والخروج منه ببساطة.
تأخذ طريقة listen في الوحدتين http وhttps في Node.js رقم منفذ كمعلَمة. على سبيل المثال:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
وسيطة "المنفذ" هذه مطلوبة في Node.js، ولكنّ Apigee Edge تتجاهل هذه المَعلمة. بدلاً من ذلك، يحدّد خادم وكيل واجهة برمجة التطبيقات الذي يتم فيه تنفيذ نص Node.js البرمجي "المضيف الافتراضي" الذي يستمع إليه، ويستخدم تطبيق Node.js المضيفات الافتراضية نفسها، تمامًا مثل أي خادم وكيل آخر في Apigee Edge.
تحتوي كل بيئة في Apigee على مضيف افتراضي واحد على الأقل. يحدّد المضيف الظاهري إعدادات HTTP الخاصة بالاتصال بمؤسسة Apigee. تتشارك جميع خوادم API الوكيلة في بيئة ما المضيفات الافتراضية نفسها. يتوفّر تلقائيًا مضيفان افتراضيان لكل بيئة:
default وsecure. لمزيد من المعلومات، يُرجى الاطّلاع على
الحصول على المضيف الافتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.
ينشئ الأمر apigeetool deploynodeapp برنامج تضمين لخادم وكيل Apigee Edge
حول تطبيق Node.js. عند نشر تطبيق Node.js، يستمع التطبيق إلى المضيف الافتراضي الظاهري المحدّد للبيئة. سيكون عنوان URL لتطبيق Node.js دائمًا
http://{org_name}-{env_name}.apigee.net.
التعامل مع الطلبات الواردة
مثل تطبيقات Apigee Edge الأخرى، إذا تم إعداد تطبيق الخادم الوكيل للاستماع على المضيف الافتراضي secure، سيقبل الطلبات الواردة باستخدام HTTPS.
التعامل مع الطلبات الصادرة
بالإضافة إلى تلقّي حركة البيانات الواردة، يمكن لتطبيقات Node.js داخل Apigee Edge استخدام الوحدتَين http وhttps لإجراء طلبات صادرة مثل أي تطبيق Node.js آخر. تعمل هذه الوحدات النمطية كما هو معتاد داخل Node.js.
التعرّف على إمكانية استخدام وحدة tls
يتوافق Apigee Edge مع وحدة tls في Node.js.
يستخدم هذا النموذج OpenSSL لتوفير بروتوكول أمان طبقة النقل (TLS) و/أو بروتوكول طبقة المقابس الآمنة (SSL) لتشفير عمليات نقل البيانات. يمكنك استخدام الوحدة tls لإنشاء اتصالات آمنة بخدمات الخلفية من تطبيقات Node.js التي تعمل على Edge.
لفهم طريقة عمل وحدة tls على Apigee Edge، من المهم معرفة كيفية استخدام virtual hosts على Apigee Edge. تحتوي كل بيئة في Apigee على مضيف افتراضي واحد على الأقل. يحدد المضيف الظاهري إعدادات HTTP للاتصال بمؤسسة Apigee. تتشارك جميع خوادم API الوكيلة في بيئة ما المضيفات الافتراضية نفسها. تتوفّر تلقائيًا مضيفان افتراضيان لكل بيئة: default وsecure. لمزيد من المعلومات حول المضيفين الافتراضيين، راجِع
الحصول على مضيف افتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.
لنلقِ نظرة الآن على كيفية تعامل Apigee Edge مع اتصالات بروتوكول أمان طبقة النقل (TLS) (طبقة المقابس الآمنة) للطلبات الواردة والصادرة في تطبيقات Node.js:
التعامل مع الطلبات الواردة
استنادًا إلى كيفية ضبط المضيفات الافتراضية لمؤسستك، يوفّر Edge الخيارات التالية:
- إذا تم ضبط خادم وكيل لواجهة برمجة التطبيقات للاستماع على المضيف الافتراضي
default، سيقبل الطلبات عبر HTTP. - إذا تم ضبط خادم وكيل لواجهة برمجة التطبيقات للاستماع على المضيف الظاهري
secure، سيقبل الطلبات عبر HTTPS. سيكون عنوان URL ضمن النطاقapigee.net، وسيتم استخدام شهادة طبقة مقابس آمنة بأحرف بدل للنطاق*.apigee.net. وطالما أنّ التطبيقات ترسل طلبات إلى النطاقapigee.net، ستتم المصادقة على شهادة SSL بشكل طبيعي.
التعامل مع الطلبات الصادرة
يمكنك إرسال طلبات صادرة باستخدام الوحدة tls بالطريقة نفسها التي تستخدمها عادةً في Node.js. بشكل أساسي، عليك إضافة مفاتيح وشهادات من جهة العميل (ملفات .pem) إلى الدليل resources/node وتحميلها داخل النص البرمجي. للحصول على معلومات حول استخدام الوحدة tls وطُرقها، يمكنك الاطّلاع على مستندات وحدة Node.js tls.
إعدادات ScriptTarget المتقدّمة
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>