ثبِّت Express وهيكِل خادمك الأول باستخدام المسارات، ومعاملات الرابط، والبرمجيات الوسيطة.
افتح هذا الدرس في Kodokonأنت تعرف بالفعل كيفية تشغيل خادم باستخدام الوحدة الأصلية http: كل شيء يدوي هناك، من قراءة الرابط إلى تجميع الترويسات. إن Express هو إطار العمل الذي وحّد تطوير الويب في جانب Node: التوجيه، والبرمجيات الوسيطة، وواجهة برمجية موجزة، دون إخفاء أيّ شيء عن البروتوكول. أنشئ مشروعًا وثبِّته.
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expressأضِف الخاصية type بالقيمة module إلى ملف package.json الخاص بك: سيستخدم المشروع بأكمله وحدات ES. ثم أنشئ server.js. تكفي بضعة أسطر لخادم عامل: تنشئ التطبيق، وتصرِّح بمسار، وتستمع على منفذ.
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});يربط المسار (route) طريقة HTTP ومسارًا (path) بدالة. تُصرَّح المقاطع الديناميكية بنقطتين رأسيتين: في /users/:id، تتوفر القيمة في req.params.id. أما معاملات الاستعلام (?q=node) فتظهر في req.query. احتفظ بهذا التمييز في ذهنك: المسار يحدد المورد، وسلسلة الاستعلام تصقل الطلب.
app.get("/users/:id", (req, res) => {
const { id } = req.params;
res.json({ id, name: "User " + id });
});
app.get("/search", (req, res) => {
const { q } = req.query;
res.json({ query: q ?? "" });
});إن البرمجية الوسيطة (middleware) دالة تُنفَّذ بين وصول الطلب ومسارك. توقيعها: (req, res, next). يمكنها إثراء req، أو الرد مباشرة، أو تمرير التحكم باستخدام next(). إن Express في جوهره ليس سوى سلسلة من البرمجيات الوسيطة: التسجيل، والمصادقة، وتحليل جسم الطلب. تسجل هذه البرمجية كل طلب مع مدته:
app.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
const ms = Date.now() - start;
console.log(`${req.method} ${req.url} ${ms}ms`);
});
next();
});/users/:id. أين تقرأ قيمة id؟req.query.idreq.params.idreq.body.idnext()؟package.json لاستخدام صياغة import في Node.js؟type بالقيمة moduleesm بالقيمة true