إضافة Node.js إلى خادم وكيل حالي لواجهة برمجة التطبيقات

أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

مقدمة

يشرح هذا الموضوع كيفية إضافة تطبيق Node.js إلى خادم وكيل حالي على نظام الملفات المحلي وكيفية تفعيل الخادم الوكيل في Apigee Edge.

إعداد بيئة التطوير

في هذا الموضوع، نفترض أنّه لديك بيئة تطوير خادم وكيل تم إعدادها على نظامك المحلي وأنّك تريد دمج تطبيق Node.js فيه.

يتّبع الهيكل الأساسي لتطبيق الوكيل الذي يتضمّن تطبيق Node.js النمط الموضّح في الشكل أدناه، مع مجلد أساسي /apiproxy ومجلدات فرعية للموارد والاستهدافات والوكلاء. يجب وضع ملفات Node.js في المجلد apiproxy/resources/node. تحتوي المجلدات الأخرى على ملفات XML تحدِّد نقاط النهاية للوكيل والخادم المستهدف، ومسار الوكيل، ومسارات الشروط، وما إلى ذلك. للحصول على وصف أكثر اكتمالاً لبنية وكيل واجهة برمجة التطبيقات، يُرجى الاطّلاع على مرجع إعداد وكيل واجهة برمجة التطبيقات.

تذكَّر أنّ أي رمز Node.js يشكّل جزءًا من الخادم الوكيل يجب وضعه ضمن /apiproxy/resources/node. هذا هو المكان الذي يتوقّع فيه Edge العثور عليه عند نشره.

تحديد هدف Node.js باستخدام ScriptTarget

إنّ المفتاح لدمج Node.js في الخادم الوكيل هو تحديد العنصر <ScriptTarget> في ملف XML الخاص بنقطة النهاية المستهدفة. في بنية ملف الخادم الوكيل، يقع ملف XML هذا في apiproxy/targets. يكون اسم الملف تلقائيًا هو default.xml.

من أجل السياق، تشير نقطة النهاية المستهدَفة عادةً إلى خدمة خلفية من نوع ما. في هذه الحالة، نستخدم خدمة Apigee mock target. يبدو تعريف نقطة النهاية المستهدَفة على النحو التالي:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

يحدِّد العنصر <HTTPTargetConnection> عنوان URL لخدمة الخلفية، وهي خدمة الاستهداف الوهمي في Apigee.

في حال استخدام Node.js، تطبيق Node.js هو الهدف. ويمكنك تحديد ذلك باستخدام <ScriptTarget> في ملف apiproxy/targets/default.xml.

بدلاً من استخدام العنصر <HTTPTargetConnection> لتحديد عنوان URL للخدمة في الخلفية، تتم الإشارة إلى تطبيق Node.js مباشرةً باستخدام العنصر <ScriptTarget>، على النحو التالي:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

يجب دائمًا إضافة البادئة node://، إلى المَعلمة <ResourceURL> متبوعة باسم نص Node.js الرئيسي. وكما ذكرنا سابقًا، يجب أن تكون موارد Node.js موجودة في /apiproxy/resources/node ضمن نطاق الوكيل لواجهة برمجة التطبيقات.

يمكنك ضبط مَعلمات إضافية في ScriptTarget. لمعرفة التفاصيل، يُرجى الاطّلاع على الإعداد المتقدّم لـ ScriptTarget.

في ما يلي رمز المصدر لملف Node.js الرئيسي، المُسمّى server.js، في هذا المثال. وهو خادم HTTP الأساسي الذي يعرض "مرحبًا بالجميع" عند تلقّي طلب:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

باختصار، بافتراض أنّ تطبيق Node.js الرئيسي يتم تنفيذه في ملف يُسمى server.js، وأنّ إعدادات نقاط النهاية كلاهما يحمل اسم default.xml، يكون لـ "خادم وكيل واجهة برمجة التطبيقات" الذي يحتوي على نص Node.js البنية التالية:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

الاستعداد لنشر التطبيق

تحتوي معظم تطبيقات Node.js على ملفات تبعية وتتضمّن ملف package.json في الدليل الأساسي. في هذه الحالة، من أفضل الممارسات تشغيل الأداة npm لضمان أن يتم ملء الدليل node_modules ذو المستوى الأعلى بالتبعيات قبل نشر التطبيق. إذا كانت هناك أي تبعيات عن بُعد غير مضمّنة في node_modules، لن يعمل تطبيق Node.js على Edge.

يمكنك بسهولة استرداد جميع التبعيات إلى نظام الملفات باستخدام الأداة المساعدة npm:

  1. من الدليل الأساسي لتطبيق Node.js، نفِّذ ما يلي:
$ npm install 

أو

$ npm update

عند تثبيت الملحقات، تكون مستعدًا لنشر الخادم الوكيل على Edge.

نشر تطبيق Node.js على Apigee Edge

قبل النشر، ستحتاج إلى معرفة اسم مؤسستك واسم المستخدم وكلمة المرور ل حسابك على Apigee Edge. ستحتاج إلى هذه المعلومات لإنشاء أمر أداة النشر بشكل صحيح.

إليك الطلب. يفترض النظام (باستخدام العلامة -d) أنّك في الدليل الجذري للخادم الوكيل. إذا كان اسم الخادم الوكيل هو foo، أدخِل الأمر التالي من دليل foo:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
للحصول على معلومات عن معنى كل علامة من علامات الأوامر، يمكنك تنفيذ ما يلي:

$ apigeetool deployproxy -h

للحصول على ملخّص سريع:

  • -n تتيح لك هذه العلامة تحديد اسم الخادم الوكيل الذي سيتم إنشاؤه عند نشر التطبيق. سيظهر هذا الاسم في واجهة مستخدم الإدارة.
  • -d تحدّد الدليل الجذري لخادم وكيل واجهة برمجة التطبيقات.
  • تحدِّد العناصر -o و-e و-u و-p اسم المؤسسة وبيئة النشر واسم المستخدم وكلمة المرور.
هذا كل ما في الأمر. يكون تطبيق Node.js داخل خادم وكيل لواجهة برمجة التطبيقات، ويتم نشره على Edge ويتم تنفيذه. وهو في انتظار الطلبات وجاهز للاختبار.

اختبار الوكيل الجديد لواجهة برمجة التطبيقات

لقد أضفت للتو تطبيق Node.js إلى خادم وكيل لواجهة برمجة التطبيقات حالي ونشرت الخادم الوكيل في Apigee Edge. لاختبار ذلك، نفِّذ الأمر cURL التالي. نفترض أنّه يتم استخدام المسار الأساسي التلقائي (/) (يتم تحديد المسار الأساسي في ملف إعداد نقطة نهاية الخادم الوكيل). احرص على استبدال اسم مؤسستك بـ org_name. إذا لم يكن لديك مكتبة cURL مثبّتة، يمكنك إدخال عنوان URL في متصفّح.

$ curl http://org_name-test.apigee.net/
Hello, Node!

عرض الخادم الوكيل الجديد في واجهة المستخدم للإدارة

سجِّل الدخول إلى حسابك على Apigee Edge وانتقِل إلى صفحة "العناصر الوكيلة لواجهات برمجة التطبيقات". سترى الخادم الوكيل المسمى "hellonode" مدرجًا هناك.

انقر على "hellonode" للاطّلاع على تفاصيل عن الخادم الوكيل. في طريقة العرض "تطوير"، يمكنك الاطّلاع على رمز المصدر الذي حمّلته وإضافة السياسات ومسارات التعديل وما إلى ذلك.

الخطوات التالية

للحصول على معلومات حول تصحيح أخطاء تطبيقات Node.js التي تعمل على Apigee Edge، يُرجى الاطّلاع على تصحيح الأخطاء والخوادم الوكيلة في Node.js وحلّها.