كيفية كتابة REST API بلغة JavaScript في 30 دقيقة: للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: REST API — أمر بسيط

REST API (Representational State Transfer) هي "اللغة" التي تتواصل بها البرامج المختلفة على الإنترنت. إذا كنت تريد أن يقوم تطبيق الويب الخاص بك بتقديم البيانات لتطبيق آخر (على سبيل المثال، تطبيق جوال أو واجهة أمامية React)، فأنت بحاجة إلى API. واليوم سنكتبه بلغة JavaScript (Node.js) من الصفر في 30 دقيقة فقط.

سنستخدم المكتبة الأكثر شهرة — Express. إنها بسيطة ومرنة ومثالية للمبتدئين. في نهاية المقال، سيكون لديك خادم عامل بأربع عمليات CRUD أساسية (إنشاء، قراءة، تحديث، حذف). هيا بنا!



الخطوة 1: تجهيز البيئة وتثبيت Express

قبل كتابة الكود، تأكد من تثبيت Node.js. يمكنك التحقق من ذلك في الطرفية:

node -vnpm -v

إذا ظهرت الإصدارات — كل شيء جاهز. إذا لم تظهر، قم بتنزيل Node.js من الموقع الرسمي.

الآن، أنشئ مجلدًا للمشروع وقم بتهيئته:

mkdir my-first-apicd my-first-apinpm init -y

تم إنشاء ملف package.json. نقوم بتثبيت Express ومكتبة UUID (لإنشاء معرفات فريدة):

npm install express uuid

تم. أنشئ ملفًا باسم index.js — سيكون هذا الملف الرئيسي للخادم.



الخطوة 2: إنشاء خادم بسيط باستخدام Express

افتح index.js واكتب الإصدار الأول من الخادم:

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

// تحليل JSON من جسم الطلبapp.use(express.json());

// مسار اختباريapp.get('/', (req, res) => { res.send('مرحبًا بالعالم! REST API يعمل!');});

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

قم بتشغيل الخادم باستخدام الأمر:

node index.js

افتح المتصفح وانتقل إلى العنوان http://localhost:3000. إذا رأيت رسالة الترحيب — كل شيء يعمل!

شرح الكود: express.json() هو middleware يقوم تلقائيًا بتحويل JSON من الطلب إلى كائن JavaScript. هذا ضروري لطلبات POST و PUT.



الخطوة 3: إضافة البيانات ومسارات CRUD

الآن الجزء الممتع — سننشئ مصفوفة من البيانات (في مشروع حقيقي، ستستخدم قاعدة بيانات، ولكن للتعلم، المصفوفة كافية). ستكون هذه قائمة بالكتب.

const { v4: uuidv4 } = require('uuid');

// محاكاة قاعدة بياناتlet books = [];

// إنشاء كتاب (POST)app.post('/api/books', (req, res) => { const { title, author } = req.body; if (!title || !author) { return res.status(400).json({ error: 'يجب تحديد العنوان والمؤلف' }); } const newBook = { id: uuidv4(), title, author }; books.push(newBook); res.status(201).json(newBook);});

// الحصول على جميع الكتب (GET)app.get('/api/books', (req, res) => { res.json(books);});

// الحصول على كتاب واحد حسب المعرف (GET)app.get('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: 'الكتاب غير موجود' }); } res.json(book);});

// تحديث كتاب (PUT)app.put('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: 'الكتاب غير موجود' }); } const { title, author } = req.body; if (title) book.title = title; if (author) book.author = author; res.json(book);});

// حذف كتاب (DELETE)app.delete('/api/books/:id', (req, res) => { const index = books.findIndex(b => b.id === req.params.id); if (index === -1) { return res.status(404).json({ error: 'الكتاب غير موجود' }); } books.splice(index, 1); res.status(204

المدونات

توصيات الكتب