۴

ساخت API با Node.js و Express

اولین API سمت سرور خود را با جاوااسکریپت می‌سازیم!

Node.js و Express.js چی هستن؟

Node.js یه محیط اجراییه که بهمون اجازه می‌ده کدهای جاوااسکریپت رو خارج از مرورگر و روی سرور اجرا کنیم. Express.js هم یه فریم‌ورک (چارچوب) خیلی محبوب برای Node.js هست که ساخت وب اپلیکیشن و API رو فوق‌العاده ساده و سریع می‌کنه. فکر کن Node.js موتور ماشینه و Express شاسی و بدنه که همه چی رو قشنگ کنار هم سوار می‌کنه.

راه‌اندازی پروژه و اولین سرور

اول باید Node.js رو نصب کنی. بعدش تو ترمینال این دستورات رو بزن:

# 1. ساخت پوشه پروژه و ورود به آن
mkdir my-first-api
cd my-first-api

# 2. ساخت فایل package.json
npm init -y

# 3. نصب Express
npm install express

حالا یه فایل به اسم `server.js` بساز و این کد رو داخلش کپی کن:

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

// این یه "روت" یا "مسیره"
// وقتی کسی به آدرس اصلی سایت درخواست GET بده، این اجرا می‌شه
app.get('/', (req, res) => {
  res.send('سلام دنیا از سرور Express!');
});

// سرور رو روی پورت ۳۰۰۰ روشن می‌کنیم
app.listen(port, () => {
  console.log(`سرور روی http://localhost:${port} روشنه`);
});

برای اجرای سرور، تو ترمینال بنویس: `node server.js`. حالا اگه تو مرورگرت بری به `http://localhost:3000`، پیام "سلام دنیا" رو می‌بینی!

ساخت Endpointهای API

Endpoint یه آدرس مشخص تو API ماست که یه کار خاصی انجام می‌ده. بیا یه API ساده برای مدیریت لیست کاربران بسازیم.

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

// به Express می‌گیم که بتونه JSON رو بخونه
app.use(express.json());

let users = [
  { id: 1, name: 'علی' },
  { id: 2, name: 'سارا' }
];

// GET: گرفتن همه کاربران
app.get('/api/users', (req, res) => {
  res.json(users);
});

// GET: گرفتن یک کاربر با ID
app.get('/api/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('کاربر پیدا نشد.');
  res.json(user);
});

// POST: ساخت کاربر جدید
app.post('/api/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

app.listen(port, () => console.log(`سرور روشنه...`));