Backend Development

بناء واجهة برمجة تطبيقات RESTful باستخدام Node.js و Express.js و MongoDB

Spread the love

سيرشدك هذا البرنامج التعليمي خلال بناء واجهة برمجة تطبيقات RESTful باستخدام Node.js و Express.js و MongoDB. سنغطي إعداد بيئتك، وتحديد نقاط نهاية واجهة برمجة التطبيقات، ومعالجة استمرارية البيانات. في النهاية، سيكون لديك واجهة برمجة تطبيقات وظيفية جاهزة للتوسع.

جدول المحتويات

مقدمة إلى واجهات برمجة تطبيقات REST و MongoDB

REST (Representational State Transfer) هو أسلوب معماري لبناء خدمات ويب قابلة للتطوير والصيانة. تستخدم واجهات برمجة تطبيقات REST طرق HTTP القياسية (GET، POST، PUT، DELETE) للتفاعل مع الموارد التي يتم تحديدها بواسطة عناوين URL. MongoDB هي قاعدة بيانات موجهة للوثائق من نوع NoSQL توفر مرونة لتخزين واسترجاع البيانات. هذا المزيج يخلق أساسًا قويًا للعديد من التطبيقات.

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

قبل أن نبدأ، تأكد من تثبيت Node.js و npm (Node Package Manager). يمكنك تنزيلهما من nodejs.org. تأكد أيضًا من تثبيت وتشغيل MongoDB. يمكنك تنزيله من mongodb.com.

إعداد المشروع والاعتماديات

أنشئ دليل مشروع جديد وانتقل إليه في محطتك الطرفية. قم بتهيئة مشروع Node.js جديد:


npm init -y

قم بتثبيت الاعتماديات اللازمة:


npm install express mongoose body-parser
  • express: إطار عمل تطبيق ويب Node.js بسيط ومرن.
  • mongoose: مكتبة نمذجة البيانات الكائنية (ODM) لـ MongoDB و Node.js.
  • body-parser: وسيط لتحليل أجسام طلبات JSON.

الاتصال بـ MongoDB

أنشئ ملفًا باسم server.js وأضف الكود التالي:


const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// سلسلة اتصال MongoDB - استبدل بتفاصيل الاتصال الخاصة بك
const mongoURI = 'mongodb://localhost:27017/mydatabase'; 

mongoose.connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('Connected to MongoDB'))
  .catch(err => console.error('Error connecting to MongoDB:', err));

app.use(bodyParser.json());

app.listen(port, () => console.log(`Server listening on port ${port}`));

تعريف نقاط نهاية واجهة برمجة التطبيقات (عمليات CRUD)

لنقم بإنشاء نموذج ونقاط نهاية بسيطة لإدارة العناصر. أضف هذا إلى ملف server.js الخاص بك:


const ItemSchema = new mongoose.Schema({
  name: String,
  description: String
});

const Item = mongoose.model('Item', ItemSchema);

// POST /items - إنشاء عنصر جديد
app.post('/items', async (req, res) => {
  try {
    const newItem = new Item(req.body);
    const savedItem = await newItem.save();
    res.status(201).json(savedItem);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

// GET /items - الحصول على جميع العناصر
app.get('/items', async (req, res) => {
  try {
    const items = await Item.find({});
    res.json(items);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

// GET /items/:id - الحصول على عنصر واحد حسب المعرف
app.get('/items/:id', async (req, res) => {
  try {
    const item = await Item.findById(req.params.id);
    if (!item) return res.status(404).json({ message: 'Item not found' });
    res.json(item);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

// PUT /items/:id - تحديث عنصر
app.put('/items/:id', async (req, res) => {
  try {
    const updatedItem = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
    if (!updatedItem) return res.status(404).json({ message: 'Item not found' });
    res.json(updatedItem);
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

// DELETE /items/:id - حذف عنصر
app.delete('/items/:id', async (req, res) => {
  try {
    const deletedItem = await Item.findByIdAndDelete(req.params.id);
    if (!deletedItem) return res.status(404).json({ message: 'Item not found' });
    res.json({ message: 'Item deleted' });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

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

استخدم أدوات مثل Postman أو curl لاختبار نقاط نهاية واجهة برمجة التطبيقات الخاصة بك. أرسل طلبات POST إلى /items لإنشاء عناصر جديدة، وطلبات GET إلى /items لاسترداد جميع العناصر، واستخدم طلبات GET و PUT و DELETE للعناصر الفردية باستخدام معرفاتها.

تنفيذ معالجة الأخطاء القوية

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

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

لقد قمت بنجاح بإنشاء واجهة برمجة تطبيقات REST أساسية باستخدام MongoDB! قم بتوسيع هذا عن طريق إضافة المصادقة، والتفويض، والتحقق من صحة البيانات، ومعالجة أكثر تطوراً للأخطاء. ضع في اعتبارك استخدام اتصال قاعدة بيانات جاهز للإنتاج واستكشاف المزيد من الميزات المتقدمة لكل من Express.js و Mongoose.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *