ساخت API (Building API)
ساخت API: ساخت RESTful API کامل 🏗️
بیایید یک RESTful API کامل بسازیم!
const express = require('express');
const app = express();
app.use(express.json());
// GET /api/users - لیست همه users
app.get('/api/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// GET /api/users/:id - یک user خاص
app.get('/api/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ error: 'User not found' });
}
res.json(user);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// POST /api/users - ساخت user جدید
app.post('/api/users', async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// PUT /api/users/:id - بهروزرسانی
app.put('/api/users/:id', async (req, res) => {
try {
const user = await User.findByIdAndUpdate(
req.params.id,
req.body,
{ new: true }
);
if (!user) {
return res.status(404).json({ error: 'User not found' });
}
res.json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// DELETE /api/users/:id - حذف
app.delete('/api/users/:id', async (req, res) => {
try {
const user = await User.findByIdAndDelete(req.params.id);
if (!user) {
return res.status(404).json({ error: 'User not found' });
}
res.status(204).send();
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000);
✅ یاد گرفتید: حالا میدونید چطور یک RESTful API کامل بسازید!
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
تمرین: ساخت REST API کامل
Hard
سوال تمرین
🎯 تمرین: Todo API
یک REST API برای Todo items بسازید با route های GET, POST, PUT, DELETE.
پاسخ تمرین
JAVASCRIPT
const express = require('express');
const app = express();
app.use(express.json());
let todos = [];
let nextId = 1;
app.get('/api/todos', (req, res) => {
res.json(todos);
});
app.post('/api/todos', (req, res) => {
const todo = { id: nextId++, ...req.body };
todos.push(todo);
res.status(201).json(todo);
});
app.put('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index === -1) {
return res.status(404).json({ error: 'Not found' });
}
todos[index] = { ...todos[index], ...req.body };
res.json(todos[index]);
});
app.delete('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index === -1) {
return res.status(404).json({ error: 'Not found' });
}
todos.splice(index, 1);
res.status(204).send();
});
app.listen(3000);
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.