إنشاء واجهة برمجة تطبيقات RESTful باستخدام Node.js و Express: تطوير API محلي خطوة بخطوة

Amine
03/10/2024

تُعد واجهات برمجة التطبيقات RESTful (RESTful APIs) واحدة من الأساليب الشائعة لتطوير خدمات الويب، والتي تتيح للأنظمة والتطبيقات المختلفة التفاعل مع بعضها البعض من خلال بروتوكول HTTP. في هذا الدليل، سنقوم ببناء واجهة برمجة تطبيقات RESTful كاملة باستخدام Node.js و Express، مع التركيز على تطويرها وتشغيلها محليًا على جهازك.

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

المتطلبات الأساسية

  • معرفة أساسية بلغة JavaScript لفهم كيفية كتابة وتعديل الكود.
  • بيئة Node.js مثبتة على جهازك. إذا لم تكن قد قمت بتثبيتها، يمكنك تنزيلها من الموقع الرسمي لـ Node.js.
  • محرر نصوص مثل Visual Studio Code لتعديل الكود بسهولة.
  • برنامج Postman لاختبار واجهات برمجة التطبيقات والتأكد من أنها تعمل بشكل صحيح.

الخطوة 1: إعداد بيئة التطوير على جهازك المحلي

إنشاء مجلد المشروع:

mkdir my-restful-api
cd my-restful-api

قم بإنشاء مجلد جديد يحتوي على جميع ملفات المشروع.

تهيئة المشروع باستخدام npm:

npm init -y

سيقوم هذا الأمر بإنشاء ملف package.json في المجلد، يحتوي على معلومات المشروع وإعداداته.

تثبيت الحزم الأساسية:

npm install express
npm install --save-dev nodemon

تثبيت مكتبة express لإنشاء خادم الويب، و nodemon لتحديث الخادم تلقائيًا عند إجراء تغييرات.

إنشاء الملف الرئيسي:

قم بإنشاء ملف باسم index.js وأضف الكود التالي لتشغيل خادم Express الأساسي:

const express = require('express');
const app = express();
const PORT = 3000;

app.use(express.json()); // دعم البيانات بتنسيق JSON

// المسار الرئيسي للصفحة الرئيسية
app.get('/', (req, res) => {
  res.send('Welcome to my RESTful API!');
});

// تشغيل الخادم
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

تحديث package.json لتشغيل nodemon:

قم بتحديث ملف package.json بإضافة الأسطر التالية:

"scripts": {
  "start": "node index.js",
  "dev": "nodemon index.js"
}

يمكنك الآن تشغيل الخادم باستخدام الأمر التالي:

npm run dev

الخطوة 2: إنشاء نقاط النهاية (Endpoints) الأساسية

سوف نقوم بإنشاء واجهة برمجة تطبيقات بسيطة لإدارة قائمة من المستخدمين (Users)، بحيث يتمكن المستخدمون من إضافة مستخدم جديد، قراءة بيانات مستخدم موجود، تحديث بياناته، أو حذفه.

// قائمة افتراضية من المستخدمين
const users = [
  { id: 1, name: 'John Doe', email: 'john@example.com' },
  { id: 2, name: 'Jane Doe', email: 'jane@example.com' }
];

// الحصول على جميع المستخدمين
app.get('/users', (req, res) => {
  res.json(users);
});

// الحصول على مستخدم معين بواسطة ID
app.get('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');
  res.json(user);
});

// إضافة مستخدم جديد
app.post('/users', (req, res) => {
  const user = {
    id: users.length + 1,
    name: req.body.name,
    email: req.body.email
  };
  users.push(user);
  res.status(201).json(user);
});

// تحديث مستخدم موجود
app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');

  user.name = req.body.name;
  user.email = req.body.email;
  res.json(user);
});

// حذف مستخدم
app.delete('/users/:id', (req, res) => {
  const index = users.findIndex(u => u.id === parseInt(req.params.id));
  if (index === -1) return res.status(404).send('User not found');

  const deletedUser = users.splice(index, 1);
  res.json(deletedUser);
});

الخطوة 3: اختبار نقاط النهاية باستخدام Postman

يمكنك اختبار نقاط النهاية باستخدام Postman من خلال إعداد الطلبات التالية:

GET: http://localhost:3000/users — لعرض جميع المستخدمين.

GET: http://localhost:3000/users/1 — لعرض مستخدم معين.

POST: http://localhost:3000/users — لإضافة مستخدم جديد، باستخدام JSON كالتالي:

{
  "name": "Alice Smith",
  "email": "alice@example.com"
}

PUT: http://localhost:3000/users/1 — لتحديث بيانات المستخدم 1.

DELETE: http://localhost:3000/users/1 — لحذف المستخدم 1.

الخطوة 4: إدارة الأخطاء والتحقق من صحة البيانات

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

تثبيت مكتبة Joi:

npm install joi

إنشاء دالة للتحقق من صحة بيانات المستخدم:

const Joi = require('joi');

function validateUser(user) {
  const schema = Joi.object({
    name: Joi.string().min(3).required(),
    email: Joi.string().email().required()
  });
  return schema.validate(user);
}

استخدام validateUser في نقاط النهاية POST و PUT كالتالي:


app.post('/users', (req, res) => {
  const { error } = validateUser(req.body);
  if (error) return res.status(400).send(error.details[0].message);

  const user = {
    id: users.length + 1,
    name: req.body.name,
    email: req.body.email
  };
  users.push(user);
  res.status(201).json(user);
});

app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');

  const { error } = validateUser(req.body);
  if (error) return res.status(400).send(error.details[0].message);

  user.name = req.body.name;
  user.email = req.body.email;
  res.json(user);
});

خاتمة

تهانينا! لقد أنهيت تطوير واجهة برمجة تطبيقات RESTful باستخدام Node.js و Express على جهازك المحلي، مع إنشاء نقاط نهاية أساسية للتحكم في البيانات، وإضافة ميزات للتحقق من صحة البيانات وإدارة الأخطاء. يمكنك الآن توسيع هذه الواجهة، ربطها بقاعدة بيانات مثل MongoDB أو MySQL، أو حتى إضافة ميزات أكثر تعقيدًا مثل التوثيق (Authentication) باستخدام JWT أو OAuth.

إذا كانت لديك أي استفسارات أو اقتراحات، فلا تتردد في ترك تعليق في الأسفل، وشارك هذا الدليل إذا وجدته مفيدًا!

التعليقات

اترك تعليقاً