در حال بارگذاری...

مسیریابی ساده

مسیریابی ساده در نود.جی‌اس به فرآیند هدایت درخواست‌های HTTP به توابع یا هندلرهای مشخص بر اساس مسیر URL و متد HTTP گفته می‌شود. این مفهوم برای ساخت APIها، وب‌سرورها و برنامه‌های میکروسرویس بسیار حیاتی است. با مسیریابی ساده، توسعه‌دهندگان می‌توانند کدهای خود را ساختارمند، قابل خواندن و نگهداری کنند، افزودن مسیرهای جدید، دیباگ کردن و پیاده‌سازی ویژگی‌های اضافی مانند امنیت و لاگینگ را آسان می‌کند.
در توسعه نود.جی‌اس، مسیریابی ساده زمانی کاربرد دارد که نیاز است پاسخ‌های متفاوت برای درخواست‌های GET، POST یا سایر متدهای HTTP ارائه شود. این مفهوم با مفاهیم کلیدی نود.جی‌اس مانند نحوه نگارش سینتکس، ساختار داده‌ها، الگوریتم‌ها و اصول برنامه‌نویسی شیءگرا ارتباط مستقیم دارد. در این آموزش، خواننده با ایجاد مسیرهای GET و POST، پردازش امن داده‌های ورودی، ارسال پاسخ با کد وضعیت HTTP مناسب و اجتناب از اشتباهات رایج آشنا خواهد شد.
درک مسیریابی ساده به توسعه‌دهندگان کمک می‌کند برنامه‌هایی مقیاس‌پذیر، امن و قابل نگهداری ایجاد کنند و در بستر معماری نرم‌افزاری، مهارت کلیدی برای طراحی سرویس‌های وب و APIها محسوب می‌شود.

مثال پایه

text
TEXT Code
const http = require('http');
const url = require('url');

function handleRequest(req, res) {
const parsedUrl = url.parse(req.url, true);
const path = parsedUrl.pathname;

res.setHeader('Content-Type', 'application/json');

if (req.method === 'GET' && path === '/hello') {
res.statusCode = 200;
res.end(JSON.stringify({ message: 'به نود.جی‌اس خوش آمدید!' }));
} else if (req.method === 'POST' && path === '/data') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
res.statusCode = 200;
res.end(JSON.stringify({ received: JSON.parse(body) }));
});
} else {
res.statusCode = 404;
res.end(JSON.stringify({ error: 'صفحه یافت نشد' }));
}

}

const server = http.createServer(handleRequest);

server.listen(3000, () => {
console.log('سرور در [http://localhost:3000](http://localhost:3000) در حال اجرا است');
});

در این مثال، از ماژول http برای ساخت سرور و از url برای تجزیه مسیر درخواست استفاده شده است. تابع handleRequest برای هر درخواست HTTP فراخوانی می‌شود. با استفاده از url.parse مسیر درخواست استخراج و با مسیرهای تعریف شده مطابقت داده می‌شود. req.method تفاوت بین GET و POST را مشخص می‌کند.
برای مسیر GET /hello، یک پیام خوش‌آمدگویی در قالب JSON بازگردانده می‌شود. مسیر POST /data داده‌ها را به صورت غیرهمزمان از طریق رویدادهای req.on('data') و req.on('end') دریافت و پس از تبدیل به JSON به کاربر ارسال می‌کند. سایر مسیرها با کد 404 پاسخ داده می‌شوند. این مثال اصول اساسی مسیریابی، پردازش داده‌های غیرهمزمان و مدیریت امن پاسخ‌ها را به خوبی نمایش می‌دهد.

مثال کاربردی

text
TEXT Code
const http = require('http');
const url = require('url');

const dataStore = [];

class Router {
constructor() {
this.routes = {};
}

register(method, path, handler) {
if (!this.routes[method]) {
this.routes[method] = {};
}
this.routes[method][path] = handler;
}

handle(req, res) {
const parsedUrl = url.parse(req.url, true);
const path = parsedUrl.pathname;
const method = req.method;

const routeHandler = this.routes[method] && this.routes[method][path];

if (routeHandler) {
routeHandler(req, res);
} else {
res.statusCode = 404;
res.end(JSON.stringify({ error: 'مسیر یافت نشد' }));
}
}

}

const router = new Router();

router.register('GET', '/items', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ items: dataStore }));
});

router.register('POST', '/items', (req, res) => {
let body = '';
req.on('data', chunk => body += chunk.toString());
req.on('end', () => {
try {
const item = JSON.parse(body);
dataStore.push(item);
res.statusCode = 201;
res.end(JSON.stringify({ message: 'مورد جدید اضافه شد', item }));
} catch (err) {
res.statusCode = 400;
res.end(JSON.stringify({ error: 'فرمت JSON نامعتبر' }));
}
});
});

const server = http.createServer((req, res) => router.handle(req, res));

server.listen(3000, () => console.log('سرور در [http://localhost:3000](http://localhost:3000) در حال اجرا است'));

در این مثال پیشرفته، کلاس Router مسیریابی را مدولار و قابل توسعه می‌کند. متد register مسیرها را بر اساس متد HTTP و مسیر ذخیره می‌کند و handle بررسی می‌کند که آیا هندلر موجود است یا خیر، و در صورت نبود مسیر، کد 404 بازمی‌گرداند. مسیر GET /items داده‌های موجود را بازمی‌گرداند و POST /items مورد جدید اضافه می‌کند. استفاده از try/catch از کرش سرور در هنگام JSON نامعتبر جلوگیری می‌کند. این ساختار اصول OOP، توسعه مدولار، پردازش غیرهمزمان و مدیریت امن خطاها را نشان می‌دهد.

بهترین شیوه‌ها شامل تنظیم صحیح هدر Content-Type، استفاده درست از کدهای وضعیت HTTP، مدولار کردن مسیرها با کلاس‌ها یا ماژول‌های خارجی، مدیریت خطا با try/catch و پردازش غیرهمزمان داده‌ها است. اشتباهات رایج شامل استفاده از متغیرهای سراسری، نادیده گرفتن خطاهای Event، مسیرها یا متدهای هاردکد شده و عدم اعتبارسنجی ورودی است.
برای دیباگینگ، ابزارهای Node.js، لاگ‌گیری و اندازه‌گیری حافظه مفید هستند. بهینه‌سازی شامل کاهش عملیات مسدودکننده، استفاده مجدد از اشیا و توابع و کارآمد کردن مدیریت رویدادها است. از نظر امنیتی، اعتبارسنجی ورودی، جلوگیری از حملات تزریق و محافظت از اطلاعات حساس ضروری است.

📊 جدول مرجع

نود.جی‌اس Element/Concept Description Usage Example
Router مدیریت و توزیع مسیرها با کلاس یا شیء router.register('GET', '/path', handler)
req.method متد HTTP درخواست (GET, POST و غیره) if (req.method === 'POST') {...}
req.on('data') دریافت داده‌های ورودی به صورت رویداد req.on('data', chunk => {...})
res.end() ارسال پاسخ و پایان درخواست res.end(JSON.stringify({ message: 'تکمیل'}))
statusCode کد وضعیت پاسخ HTTP res.statusCode = 404
Content-Type نوع محتوای پاسخ HTTP res.setHeader('Content-Type', 'application/json')

جمع‌بندی و مراحل بعدی: درک مسیریابی ساده امکان مدیریت درخواست‌های HTTP، سازماندهی مسیرها و متدها، پردازش غیرهمزمان داده‌ها و ساخت پاسخ امن را فراهم می‌کند. مدولار کردن و مدیریت خطاها پایه‌ای برای ساخت APIها و برنامه‌های وب مقیاس‌پذیر است. مراحل بعدی شامل استفاده از میان‌افزار، احراز هویت و چارچوب‌های پیشرفته مانند Express.js یا Fastify برای مسیریابی پیچیده است. تمرین عملی، تقویت مدیریت مسیر و داده و کنترل خطا ضروری است. مستندات رسمی Node.js، مثال‌های جامعه و چالش‌های برنامه‌نویسی منابع ارزشمندی برای یادگیری مداوم هستند.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

4
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود