الدرس الثاني والثلاثون: العمل مع Node.js و Express.js
في هذا الدرس، سنتعرف على كيفية استخدام Node.js و Express.js لبناء خادم ويب وإدارة الطلبات والردود باستخدام Express. سنتعلم كيفية بناء واجهات برمجة التطبيقات (APIs) باستخدام Express.js بالإضافة إلى التعامل مع routes و middleware في التطبيق.
1. ما هو Node.js و Express.js؟
- Node.js هو بيئة تشغيل تعتمد على JavaScript، تسمح لك بتشغيل JavaScript خارج المتصفح. يُستخدم Node.js لبناء تطبيقات السيرفر مثل APIs، تطبيقات الويب، وأدوات الطرفية.
- Express.js هو إطار عمل مفتوح المصدر لبناء تطبيقات الويب باستخدام Node.js. يوفر Express واجهات برمجة التطبيقات (APIs) لتسهيل التعامل مع routes (المسارات) و middleware (البرمجيات الوسيطة) بشكل مبسط ومرن.
2. إعداد البيئة للعمل مع Node.js و Express.js
الخطوة 1: إنشاء مشروع جديد باستخدام Node.js
أولاً، تحتاج إلى تثبيت Node.js على جهازك. بعد ذلك، يمكنك إنشاء مشروع جديد باستخدام npm:
mkdir my-express-app
cd my-express-app
npm init -y
يتم استخدام الأمر npm init -y لإنشاء ملف package.json بشكل تلقائي.
الخطوة 2: تثبيت Express.js
لتثبيت Express.js، يمكنك استخدام npm:
npm install express
الخطوة 3: إنشاء الخادم الأساسي
الآن بعد أن قمت بتثبيت Express، يمكنك إنشاء الخادم الأساسي. قم بإنشاء ملف جديد يسمى server.js وكتابة الكود التالي:
// server.js
const express = require('express');
const app = express();
const port = 3000;
// تعريف route للمسار الرئيسي
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// تشغيل الخادم على المنفذ 3000
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
الشرح:
express(): يُستخدم لإنشاء تطبيق Express جديد.app.get(): يُستخدم لتحديد المسارGETفي التطبيق. في هذا المثال، يتم تعريف مسار/الذي يرسل نصًا عند الوصول إليه.app.listen(): يقوم بتشغيل الخادم على المنفذ المحدد.
الخطوة 4: تشغيل الخادم
لتشغيل الخادم، استخدم الأمر التالي:
node server.js
بمجرد تشغيل الخادم، يمكنك زيارة http://localhost:3000 في المتصفح لرؤية الرسالة “Hello, Express!”.
3. التعامل مع Routes في Express.js
تُستخدم routes (المسارات) لتحديد كيفية التعامل مع الطلبات التي يتم إرسالها إلى الخادم. يمكن إنشاء أنواع مختلفة من المسارات مثل GET و POST و PUT و DELETE.
مثال على مسارات متعددة
// server.js
const express = require('express');
const app = express();
const port = 3000;
// مسار GET
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// مسار GET مع معلمات (Params)
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
res.send(`User ID: ${userId}`);
});
// مسار POST
app.post('/create', express.json(), (req, res) => {
const userData = req.body;
res.send(`User created: ${JSON.stringify(userData)}`);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
الشرح:
/user/:id: هو مسار يحتوي على معلمةidالتي يمكن الوصول إليها باستخدامreq.params.id.app.post('/create'): يُستخدم لإنشاء بيانات جديدة عبر طلب POST. في هذا المثال، يتم إرسال بيانات المستخدم في الجسم (body) عبرreq.body.
كيفية إرسال طلبات POST عبر Postman أو cURL:
يمكنك إرسال طلب POST عبر Postman أو cURL باستخدام العنوان http://localhost:3000/create مع البيانات في الجسم (body).
استخدام cURL:
curl -X POST http://localhost:3000/create -H "Content-Type: application/json" -d '{"name": "John", "age": 30}'
4. التعامل مع Middleware في Express.js
Middleware في Express هو دالة أو مجموعة من الدوال التي تُنفذ بين وصول الطلب إلى الخادم وبين إرسال الرد. يُستخدم middleware للقيام بعدة مهام مثل التحقق من التوثيق، معالجة البيانات، وإدارة الأخطاء.
مثال على استخدام Middleware
// server.js
const express = require('express');
const app = express();
const port = 3000;
// Middleware لتسجيل كل الطلبات
app.use((req, res, next) => {
console.log(`${req.method} request made to ${req.url}`);
next(); // يسمح للطلب بالمرور إلى المسار التالي
});
// Middleware لتحليل JSON في الجسم (body)
app.use(express.json());
// مسار GET
app.get('/', (req, res) => {
res.send('Hello, Express with Middleware!');
});
// مسار POST
app.post('/create', (req, res) => {
const userData = req.body;
res.send(`User created: ${JSON.stringify(userData)}`);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
الشرح:
app.use(): تُستخدم لتحديد middleware التي تُنفذ على جميع المسارات.- في المثال الأول، نقوم بتسجيل جميع الطلبات باستخدام
console.log(). - في المثال الثاني، نقوم باستخدام middleware لتحليل البيانات بتنسيق JSON في الجسم (body) من خلال
express.json().
- في المثال الأول، نقوم بتسجيل جميع الطلبات باستخدام
5. بناء واجهات برمجة التطبيقات (APIs) باستخدام Express.js
الآن بعد أن تعلمنا كيفية التعامل مع routes و middleware، سنقوم ببناء واجهات برمجة التطبيقات (APIs) بسيطة باستخدام Express.js.
مثال: API لإدارة المستخدمين
// server.js
const express = require('express');
const app = express();
const port = 3000;
// بيانات المستخدمين المحاكاة
let users = [
{ id: 1, name: 'John', age: 30 },
{ id: 2, name: 'Jane', age: 25 }
];
// Middleware لتحليل JSON في الجسم (body)
app.use(express.json());
// مسار GET لاسترجاع قائمة المستخدمين
app.get('/api/users', (req, res) => {
res.json(users);
});
// مسار GET لاسترجاع مستخدم معين بناءً على المعرف
app.get('/api/users/:id', (req, res) => {
const userId = parseInt(req.params.id);
const user = users.find(u => u.id === userId);
if (user) {
res.json(user);
} else {
res.status(404).send('User not found');
}
});
// مسار POST لإضافة مستخدم جديد
app.post('/api/users', (req, res) => {
const newUser = req.body;
newUser.id = users.length + 1; // إضافة معرّف جديد
users.push(newUser);
res.status(201).json(newUser);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
الشرح:
/api/users: يُستخدم لاسترجاع جميع المستخدمين عبر طلب GET./api/users/:id: يُستخدم لاسترجاع مستخدم معين باستخدام معرّف (ID) عبر GET./api/users: يُستخدم لإضافة مستخدم جديد عبر طلب POST.
كيفية استخدام API عبر Postman أو cURL:
- GET جميع المستخدمين:
curl http://localhost:3000/api/users - GET مستخدم معين:
curl http://localhost:3000/api/users/1 - POST لإضافة مستخدم جديد:
curl -X POST http://localhost:3000/api/users -H "Content-Type: application/json" -d '{"name": "Alice", "age": 28}'
6. الختام
في هذا الدرس:
- تعلمنا كيفية بناء خادم باستخدام Express.js و Node.js.
- تعلمنا كيفية التعامل مع routes و middleware.
- تعلمنا كيفية بناء APIs باستخدام Express.js.
Express.js هو أداة قوية لبناء تطبيقات الويب و APIs باستخدام Node.js. باستخدام هذا الإطار، يمكنك بناء تطبيقات ديناميكية بسهولة ومرونة.
اكتشاف المزيد من كود التطور
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.


