Skip to main content
Практика завдань

Як побудувати REST API з Express.js?

Створення REST API з Express.js

REST API (Representational State Transfer) використовує методи HTTP для виконання CRUD-операцій над ресурсами. Express.js робить це простим завдяки своїй системі маршрутизації.


HTTP Методи → CRUD

HTTP МетодCRUDОпис
GETЧитатиОтримати ресурс
POSTСтворитиСтворити новий ресурс
PUTОновити (повністю)Замінити ресурс
PATCHОновити (частково)Модифікувати ресурс
DELETEВидалитиВидалити ресурс

Повний REST API для користувачів

js
const express = require('express'); const app = express(); app.use(express.json()); // парсити JSON тіло запиту // Сховище в пам'яті (використовуйте базу даних у виробництві) let users = [ { id: 1, name: 'Alice', email: 'alice@example.com' }, { id: 2, name: 'Bob', email: 'bob@example.com' }, ]; let nextId = 3; // GET /users — список усіх користувачів app.get('/users', (req, res) => { res.json(users); }); // GET /users/:id — отримати одного користувача app.get('/users/:id', (req, res) => { const user = users.find(u => u.id === Number(req.params.id)); if (!user) return res.status(404).json({ error: 'Користувача не знайдено' }); res.json(user); }); // POST /users — створити користувача app.post('/users', (req, res) => { const { name, email } = req.body; if (!name || !email) { return res.status(400).json({ error: 'name та email є обов\'язковими' }); } const user = { id: nextId++, name, email }; users.push(user); res.status(201).json(user); }); // PUT /users/:id — замінити користувача app.put('/users/:id', (req, res) => { const index = users.findIndex(u => u.id === Number(req.params.id)); if (index === -1) return res.status(404).json({ error: 'Користувача не знайдено' }); users[index] = { id: Number(req.params.id), ...req.body }; res.json(users[index]); }); // PATCH /users/:id — частково оновити користувача app.patch('/users/:id', (req, res) => { const user = users.find(u => u.id === Number(req.params.id)); if (!user) return res.status(404).json({ error: 'Користувача не знайдено' }); Object.assign(user, req.body); res.json(user); }); // DELETE /users/:id — видалити користувача app.delete('/users/:id', (req, res) => { const index = users.findIndex(u => u.id === Number(req.params.id)); if (index === -1) return res.status(404).json({ error: 'Користувача не знайдено' }); users.splice(index, 1); res.status(204).send(); }); app.listen(3000, () => console.log('API працює на порту 3000'));

Чек-лист об'єкта запиту

js
req.params.id // Параметр URL: /users/:id req.query.page // Запит рядка: /users?page=2 req.body.name // Тіло запиту (JSON) req.headers['authorization'] // Заголовки запиту req.method // 'GET', 'POST' тощо req.path // '/users/1' req.ip // IP-адреса клієнта

Чек-лист об'єкта відповіді

js
res.json({ data }) // Відправити JSON (встановлює Content-Type) res.send('text') // Відправити текст/HTML res.status(201).json(data) // Встановити статус + відправити JSON res.status(204).send() // Немає вмісту res.redirect('/new-url') // Перенаправити res.set('X-Custom', 'val') // Встановити заголовок

Найкращі практики REST API

  1. Використовуйте іменники для ресурсів: /users, /products (не /getUsers)
  2. Використовуйте методи HTTP для дій, а не дієслова в URL
  3. Повертайте відповідні код статусу (200, 201, 400, 401, 404, 500)
  4. Версіюйте ваш API: /api/v1/users
  5. Завжди повертайте JSON з послідовною структурою
  6. Використовуйте множинні назви ресурсів: /users, а не /user

Послідовний формат відповіді

js
// Успіх res.json({ success: true, data: user }); // Помилка res.status(400).json({ success: false, error: 'Валідація не пройшла' }); // Список з пагінацією res.json({ success: true, data: users, pagination: { page: 1, limit: 10, total: 100 } });

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань