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

ایجاد سرور HTTP

در نود.جی‌اس، ایجاد سرور HTTP یک مهارت حیاتی برای توسعه برنامه‌های وب و سرویس‌های بک‌اند مدرن است. نود.جی‌اس با معماری مبتنی بر رویداد و غیرمسدودکننده خود، قادر است هزاران اتصال همزمان را به‌صورت بهینه مدیریت کند. یک سرور HTTP به عنوان واسط بین درخواست‌های کلاینت و پاسخ‌های سرور عمل می‌کند و پایه‌ای برای ایجاد APIها، وب‌سرویس‌ها و میکروسرویس‌ها فراهم می‌آورد.
در توسعه نود.جی‌اس، از سرور HTTP برای ارائه RESTful APIها، سرو کردن محتوای ایستا و پیاده‌سازی سرویس‌های زمان واقعی استفاده می‌شود. استفاده صحیح از سینتکس نود.جی‌اس، ساختارهای داده، الگوریتم‌های بهینه و اصول برنامه‌نویسی شیءگرا، منجر به تولید کد تمیز، قابل نگهداری و با عملکرد بالا می‌شود.
در این آموزش، شما یاد خواهید گرفت چگونه یک سرور HTTP ساده در نود.جی‌اس ایجاد کنید، درخواست‌ها و پاسخ‌ها را مدیریت کنید، چندین مسیر (route) را پیاده‌سازی کنید و خطاها را به شکل اصولی مدیریت نمایید. همچنین، بهینه‌سازی عملکرد، ملاحظات امنیتی و ادغام با معماری سیستم‌های پیچیده مورد بررسی قرار خواهد گرفت. پس از این آموزش، قادر خواهید بود سرورهای HTTP آماده تولید بسازید که مطابق با بهترین شیوه‌های نود.جی‌اس و استانداردهای توسعه باشند.

مثال پایه

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

const PORT = 3000;

const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('به سرور HTTP نود.جی‌اس خوش آمدید!\n');
});

server.listen(PORT, () => {
console.log(`سرور در حال اجراست http://localhost:${PORT}`);
});

در این مثال پایه، از ماژول داخلی http نود.جی‌اس برای ایجاد یک سرور ساده استفاده شده است. متغیر PORT شماره پورت سرور را مشخص می‌کند. تابع createServer برای هر درخواست ورودی (req) اجرا شده و پاسخ (res) را ارسال می‌کند. writeHead کد وضعیت و هدرها را تنظیم می‌کند و res.end پاسخ را می‌فرستد و اتصال را می‌بندد.
این مثال معماری رویدادمحور نود.جی‌اس را نمایش می‌دهد که توانایی مدیریت چندین درخواست همزمان را دارد. استفاده صحیح از res.end تضمین می‌کند که منابع آزاد شده و از نشت حافظه جلوگیری شود. این سرور پایه، امکان توسعه پروژه‌های واقعی مانند REST API، سرو فایل‌های استاتیک یا اتصال به پایگاه داده را دارد.

مثال کاربردی

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

const PORT = 4000;

const routes = {
'/': (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('صفحه اصلی\n');
},
'/api/data': (req, res) => {
const data = { message: 'داده API نود.جی‌اس' };
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
},
'/about': (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('صفحه درباره\n');
}
};

const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
const routeHandler = routes[parsedUrl.pathname];

if (routeHandler) {
try {
routeHandler(req, res);
} catch (error) {
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('خطای داخلی سرور');
console.error('خطای سرور:', error);
}
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('صفحه پیدا نشد');
}

});

server.listen(PORT, () => {
console.log(`سرور کاربردی در حال اجراست http://localhost:${PORT}`);
});

در این مثال پیشرفته، از یک شیء routes برای نگاشت مسیرها به توابع کنترلر استفاده شده است. url.parse مسیر درخواست را استخراج می‌کند و تابع مربوطه را اجرا می‌کند. استفاده از try/catch برای مدیریت ایمن خطاها ضروری است. پاسخ‌ها می‌توانند به صورت متن یا JSON باشند که برای پروژه‌های واقعی کاربردی است.
با کپسوله‌سازی منطق روت‌ها در کلاس‌ها یا ماژول‌ها، می‌توان ساختار شیءگرا را حفظ و نگهداری کد را ساده‌تر کرد. استفاده صحیح از writeHead و res.end منابع را بهینه مصرف می‌کند و از نشت حافظه جلوگیری می‌کند. این سرور قابلیت توسعه برای فایل‌های استاتیک، احراز هویت و اتصال به پایگاه داده را دارد.

بهترین شیوه‌ها در نود.جی‌اس شامل کدنویسی ماژولار، استفاده مؤثر از ماژول‌های داخلی و اطمینان از پایان یافتن هر درخواست با res.end است. مدیریت کامل خطاها از طریق try/catch یا رویدادهای error ضروری است. اشتباهات رایج شامل فراموش کردن res.end، نادیده گرفتن مسیرهای نامشخص و استفاده از الگوریتم‌های غیر بهینه در پردازش درخواست است.
برای دیباگ، استفاده از console.error و ابزارهای پروفایلینگ نود.جی‌اس (--inspect) توصیه می‌شود. بهینه‌سازی عملکرد با کشینگ، فشرده‌سازی و محدودیت اتصالات امکان‌پذیر است. امنیت سرور با اعتبارسنجی ورودی، جلوگیری از SQL/NoSQL Injection و استفاده از HTTPS تضمین می‌شود. اجرای این شیوه‌ها منجر به ساخت سرور پایدار و با عملکرد بالا می‌شود.

📊 جدول مرجع

نود.جی‌اس Element/Concept Description Usage Example
http.createServer ایجاد سرور HTTP const server = http.createServer((req,res)=>{res.end('سلام');});
res.writeHead تنظیم وضعیت و هدرها res.writeHead(200, {'Content-Type':'text/plain'});
res.end ارسال پاسخ و پایان درخواست res.end('سلام دنیا');
url.parse تحلیل URL برای مسیر یابی const parsedUrl = url.parse(req.url,true);
try/catch مدیریت امن خطاها در روت‌ها try {routes[path](req,res);} catch(e){res.end('خطا');}

نکات کلیدی در ایجاد سرور HTTP در نود.جی‌اس شامل پردازش غیرهمزمان درخواست‌ها، مدیریت اشیاء Request/Response، پیاده‌سازی چندین مسیر و مدیریت مؤثر خطاها است. این مهارت‌ها به شما امکان می‌دهند اپلیکیشن‌های وب مقیاس‌پذیر، قابل نگهداری و با عملکرد بالا بسازید.
گام‌های بعدی شامل استفاده از فریمورک‌هایی مانند Express.js، توسعه REST-API، ادغام با پایگاه داده، کشینگ و بهینه‌سازی عملکرد است. نکات عملی شامل ساخت سرور چندمنظوره، تست بار و پایش لاگ‌ها می‌باشد. مستندات رسمی نود.جی‌اس و پروژه‌های متن باز منابع عالی برای یادگیری مداوم هستند.

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

آماده شروع

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

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

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

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

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