يجب ألا يكون نشر تطبيقات Node.js مشكلة. قم بإعداد خادم Express.js وتشغيله باستخدام منصة Render منخفضة التكلفة وسهلة الاستخدام.

في نهاية عام 2022 ، أوقفت Heroku خيار المستوى المجاني الخاص بها مما أدى إلى إزالة خطة الاشتراك المجانية المتوفرة سابقًا لاستضافة الويب والخدمات السحابية الأخرى في نظامها البيئي.

تعد المستويات المجانية سهلة الاستخدام وفعالة من حيث التكلفة بشكل خاص إذا كنت تنوي نشر التطبيقات واستضافتها لفترة قصيرة. لحسن الحظ ، هناك منصة سحابية بديلة ، مثل Heroku ، تقدم مستوى مجانيًا لخدماتها السحابية من بين الامتيازات الأخرى.

في هذه المقالة ، سوف نستكشف كيفية نشر Express.js REST API على Render ، وهو نظام استضافة قائم على السحابة.

ما هو التقديم؟

Render عبارة عن نظام أساسي للاستضافة السحابية يوفر طريقة سلسة وخالية من المتاعب لنشر وإدارة مواقع الويب الثابتة أو تطبيقات الويب الكاملة أو واجهات برمجة التطبيقات الخلفية أو قواعد البيانات على السحابة. الميزات تشمل:

  • واجهة سهلة الاستخدام: يوفر Render واجهة بسيطة وبديهية تبسط عملية نشر التطبيقات التي تم إنشاؤها باستخدام لغات البرمجة الشائعة مثل Python و Node.js.
  • instagram viewer
  • قواعد بيانات مدمجة: يقدم Render دعمًا مدمجًا لقواعد البيانات الشائعة مثل PostgreSQL و MySQL و MongoDB ، مما يجعله من السهل إعداد قواعد البيانات ودمجها في التطبيقات دون الحاجة إلى إعداد قاعدة بيانات منفصلة الخوادم.
  • سير عمل نشر سلس: يوفر Render ميزات مثل النشر الآلي ، والتراجع ، والتكامل مع الخدمات الشائعة مثل GitHub و GitLab.
  • المجالات المخصصة و SSL: يوفر Render القدرة على تكوين أسماء النطاقات المخصصة لمواقع الويب وتطبيقات الويب ، ويتضمن شهادات SSL مجانية للوصول الآمن عبر HTTPS.

مقارنة بين Render و Heroku

مثل الأنظمة الأساسية السحابية الأخرى ، فإن Render لها مزاياها وعيوبها. ولكن كيف تقارن بالحلول السحابية الشائعة مثل Heroku؟

  • بساطة: يوفر Render واجهة سهلة الاستخدام لنشر التطبيقات وإدارتها ، مع التركيز على سهولة الاستخدام والحد الأدنى من التكوين.
  • التحجيم الآلي: يقوم Render تلقائيًا بقياس التطبيقات حسب الطلب ، دون الحاجة إلى تعديلات يدوية أو تكوين معقد.
  • الفعالية من حيث التكلفة: يقدم Render أسعارًا منخفضة التكلفة تتضمن مستوى مجانيًا للمشاريع الفردية وأسعارًا منخفضة نسبيًا للفرق و الخطط التنظيمية ، مما يجعلها خيارًا مناسبًا للميزانية لاستضافة تطبيقات الويب الصغيرة الحجم والتجارية الكبيرة المشاريع.
  • مرونة محدودة: يمكن أن تكون بساطته وأقل تكوينه قيدًا على المشاريع المتقدمة والمعقدة التي تتطلب المزيد من التخصيص والتحكم في بيئة الاستضافة.

قم بإعداد مشروع جديد على Render

للبدء ، توجه إلى موقع رندر وقم بالتسجيل وتسجيل الدخول إلى حسابك.

يجعل Render من السهل نشر وإدارة واجهات برمجة التطبيقات الخلفية من خلال تقديم دعم مدمج للغات البرمجة الشائعة وخدمات الويب التي تسهل عملية النشر.

سيستفيد هذا الدليل من ميزة خدمات الويب لنشر واجهة برمجة تطبيقات Express.js REST. للمتابعة ، ستحتاج أولاً إلى إعداد مثيل قاعدة بيانات PostgreSQL على Render.

في صفحة النظرة العامة ، انقر فوق PostgreSQL الجديدة زر لإعداد مثيل جديد.

بعد ذلك ، قم بملء اسم قاعدة البيانات الخاصة بك ، وانقر فوق إنشاء قاعدة بيانات. أخيرًا ، انسخ ملف URL قاعدة بيانات داخلية متاح. ستستخدمه لتكوين الاتصال بين Express REST API وقاعدة بيانات PostgreSQL.

بشكل أساسي ، يتم استخدام عنوان URL الخاص بقاعدة البيانات الداخلية لإنشاء اتصال بين التطبيقات التي تعمل على خوادم Render مثل واجهة برمجة التطبيقات المنشورة أو تطبيق الويب الكامل.

ومع ذلك ، إذا كنت ترغب فقط في استخدام قاعدة بيانات PostgreSQL من تطبيق تم نشره على نظام أساسي آخر ، فيمكنك استخدام عنوان URL خارجي لقاعدة البيانات لتكوين اتصال قاعدة البيانات.

أنشئ واجهة برمجة تطبيقات Express.js REST

انطلق و إنشاء خادم ويب Express.js. بعد ذلك ، قم بتثبيت الحزم التالية:

npm تثبيت pg knex

يمكنك العثور على رمز هذا المشروع في هذا مستودع جيثب.

تكوين اتصال قاعدة البيانات

لإعداد الاتصال بين Express.js API ومثيل PostgreSQL الخاص بـ Render ، في الدليل الجذر لمجلد مشروعك ، قم بإنشاء db.js ملف وإضافة الرمز أدناه.

مقدار ثابت كنكس = يتطلب("knex");
مقدار ثابت ديسيبل = كنكس ({
عميل: "pg",
اتصال: {
سلسلة الاتصال: "عنوان URL لقاعدة البيانات",
ssl: {
رفض غير مصرح به: خطأ شنيع
}
}
});

وحدة.exports = db؛

بعد ذلك ، افتح ملف index.js ملف ، وأضف الكود أدناه تنفذ واجهة برمجة تطبيقات REST بسيطة بأربعة طرق.

مقدار ثابت صريح = يتطلب("يعبر");
مقدار ثابت التطبيق = صريح ()
مقدار ثابت ديسيبل = يتطلب("./db")
مقدار ثابت المنفذ = process.env. بورت || 5000

app.use (express.json ())
app.use (express.urlencoded ({ ممتد: حقيقي }))

app.get ('/'، (مطلوب ، الدقة) => إرسال الدقة ('مرحبا بالعالم!' ))

// احصل على جميع المستخدمين
app.get ("/ المستخدمين", غير متزامن (مطلوب ، الدقة) => {
يحاول {
مقدار ثابت المستخدمون = انتظر حدد (). من ("المستخدمون")
res.json (المستخدمون)
} يمسك (خطأ) {
وحدة التحكم. Error (خطأ)
res.status (500) .json ({ رسالة: "خطأ في استرداد المستخدمين" })
}
})


app.post ("/ المستخدمين", غير متزامن (مطلوب ، الدقة) => {
يحاول {
مقدار ثابت المستخدم = انتظر ديسيبل ("المستخدمون").إدراج({ اسم: req.body.name}) العودة ('*')
res.json (مستخدم)
} يمسك (خطأ) {
وحدة التحكم. Error (خطأ)
res.status (500) .json ({ رسالة: "خطأ في إنشاء المستخدم" })
}
})

// حذف مستخدم موجود
app.delete ('/ users /: id', غير متزامن (مطلوب ، الدقة) => {
يحاول {
مقدار ثابت {id} = req.params
مقدار ثابت المستخدم = انتظر ديسيبل ("المستخدمون") .where ({id}). delete (). return ('*')
res.json (مستخدم)
} يمسك (خطأ) {
وحدة التحكم. Error (خطأ)
res.status (500) .json ({ رسالة: "خطأ في حذف المستخدم" })
}
})

app.listen (PORT ، () => وحدة التحكم.سجل(`الخادم في PORT:{PORT} دولار`))

قم بإعداد ملف migrate.js

انشاء مجلد جديد، نصوص، في الدليل الجذر لمشروعك ، أضف ملفًا جديدًا ، migrate.js ، وأخيرًا ، أضف الكود أدناه:

مقدار ثابت ديسيبل = يتطلب("../db");
(غير متزامن () => {
يحاول {
انتظر db.schema.dropTableIfExists ("المستخدمون")
انتظر مخطط ديسيبل.'عام').اصنع جدول("المستخدمون"، (جدول) => {
table.increments ()
table.string ('اسم')
})
وحدة التحكم.سجل("إنشاء جدول المستخدمين!")
process.exit (0)
} يمسك (يخطئ) {
وحدة التحكم.log (يخطئ)
process.exit (1)
}
})()

هذا الرمز سيخلق المستخدمين جدول في قاعدة البيانات بعمودين: حقل مفتاح أساسي يتزايد تلقائيًا وحقل اسم.

أخيرًا ، أضف هذه الأوامر إلى ملف package.json ملف.

"نصوص": {
"يبدأ": "node index.js",
"يهاجر": "نصوص العقدة / migrate.js",
},

أخيرًا ، لإنشاء جدول المستخدم في قاعدة البيانات ، تحتاج إلى تشغيل ملف migrate.js ملف كبرنامج نصي على جهازك باستخدام الأمر أدناه.

npm تشغيل الترحيل

ومع ذلك ، قبل تشغيل الأمر ، تأكد من استرداد ملف عنوان URL خارجي لقاعدة البيانات من معلومات إعدادات مثيل PostgreSQL لدى Render ، والصقها في ملف db.js ملف كسلسلة الاتصال.

سيؤدي هذا إلى إنشاء اتصال بطبعة قاعدة البيانات من جهازك المحلي ، مما يسمح لك بإنشاء الجدول قبل نشر API. بمجرد إنشاء الجدول ، يمكنك بعد ذلك التوجه إلى مثيل PostgreSQL في Render الخاص بك ، واسترداد ملف URL قاعدة بيانات داخلية، وتحديث db.js وفقًا لذلك.

انشر REST API على Render

أولاً، إنشاء مستودع جديد على جيثب ودفع كود المشروع. بعد ذلك ، قم بتسجيل الدخول إلى حساب Render الخاص بك ، وانقر فوق جديد + ، وحدد ملف خدمة ويب الخيار من القائمة المنسدلة.

أخيرًا ، قم بالوصول إلى حساب GitHub الخاص بك ، وحدد مستودع مشروعك ، واتصل به على Render.

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

اختبار نقاط نهاية API على ساعي البريد

Postman هي أداة شائعة لتطوير واختبار واجهات برمجة التطبيقات. للتعرف على ساعي البريد ، تعلم كيفية استخدامه لاختبار API.

لاختبار API المنشور ، قم بعمل ملف بريد طلب إلى /المستخدمين نقطة النهاية لتخزين البيانات في قاعدة بيانات PostgreSQL.

أخيرًا ، قم بتقديم طلب GET لاسترداد البيانات المخزنة.

هل يعتبر تقديم بديل قابل للتطبيق؟

يوفر Render عملية إعداد مباشرة ، وتكاملًا سلسًا مع أنظمة التحكم في الإصدار الشائعة مما يجعله منصة استضافة سحابية بديلة جيدة.

علاوة على ذلك ، فإن نموذج التسعير التنافسي والدعم المدمج لأدوات التطوير الشائعة يجعله خيارًا موثوقًا به وسهل الاستخدام لكل من المشاريع الجانبية والتطبيقات التجارية الكبيرة.