Чим відрізняється просто REST API від RESTful API?

REST vs RESTful API: У чому різниця?

🔹 REST (Representational State Transfer) – це архітектурний стиль, який визначає принципи та обмеження для створення веб-служб.
🔹 RESTful API – це веб-інтерфейс (API), який відповідає принципам REST і правильно їх застосовує.

Говорячи просто:

  • REST – це концепція (теоретичний підхід).
  • RESTful API – це практична реалізація REST у реальному додатку.

Далі розберемо це детально! 👇


🔹 1. Що таке REST?

REST – це набір правил та обмежень для створення API. Його ключові принципи:

  1. Клієнт-серверна архітектура – сервер відповідає за логіку, клієнт за відображення.
  2. Відсутність стану (Stateless) – кожен запит повинен містити всю необхідну інформацію.
  3. Кешування (Cacheable) – відповіді можуть бути кешовані для швидшого доступу.
  4. Єдиний інтерфейс (Uniform Interface) – стандартизовані URL і HTTP-методи.
  5. Шарова система (Layered System) – клієнт не знає, скільки проміжних серверів обробляють запит.
  6. Код за запитом (Optional Code-on-Demand) – сервер може надсилати виконуваний код (наприклад, JavaScript).

📌 Приклад простого REST-підходу:
Користувач хоче отримати список товарів:

GET /products

Сервер повертає:

[
  { "id": 1, "name": "Ноутбук", "price": 1500 },
  { "id": 2, "name": "Мишка", "price": 25 }
]

🔹 2. Що таке RESTful API?

RESTful API – це втілення REST у коді, яке дотримується всіх принципів REST.

🛑 Не кожен REST API є RESTful!
Якщо API має певні порушення принципів REST, воно не може називатися повністю RESTful.

Ознаки RESTful API:

Використання HTTP-методів правильно:

  • GET – отримати дані
  • POST – створити ресурс
  • PUT – оновити ресурс
  • DELETE – видалити ресурс

Чіткі URL без action у назвах:
Поганий варіант:

GET /getAllUsers
POST /createUser
DELETE /deleteUser?id=1

Хороший RESTful API:

GET /users
POST /users
DELETE /users/1

Використання статус-кодів HTTP:

  • 200 OK – успішний запит
  • 201 Created – створено ресурс
  • 400 Bad Request – неправильний запит
  • 404 Not Found – ресурс не знайдено
  • 500 Internal Server Error – помилка сервера

Використання форматів даних:
RESTful API передає дані у JSON, XML або інших форматах.

Робота без стану (Stateless):
Сервер не зберігає інформацію про клієнта між запитами. Кожен запит містить всі необхідні дані, наприклад, токен авторизації.


🔹 3. Основні Відмінності REST та RESTful API

Критерій REST (Концепція) RESTful API (Реалізація)
🔹 Що це? Принципи побудови API Конкретне API, яке відповідає цим принципам
🔹 HTTP-методи Теоретично повинні використовуватися правильно Реально використовуються GET, POST, PUT, DELETE
🔹 URL-адреси Не обов’язково чисті Використовують правильну структуру /resource/{id}
🔹 Статус-коди Можливо не використовуються Завжди повертають правильний код (200, 201, 404, 500)
🔹 Формат даних Може бути будь-який Найчастіше використовується JSON
🔹 Кешування Рекомендовано, але не обов’язково Повинно бути реалізовано, якщо можливо

🎯 4. Приклад RESTful API на Express.js

Щоб створити RESTful API, скористаємося Express.js:

📌 Встановлення та запуск

npm init -y
npm install express

📌 Створення серверу

const express = require('express');
const app = express();
app.use(express.json());

let products = [
    { id: 1, name: "Ноутбук", price: 1500 },
    { id: 2, name: "Мишка", price: 25 }
];

// 1️⃣ Отримати всі продукти
app.get('/products', (req, res) => {
    res.json(products);
});

// 2️⃣ Отримати один продукт
app.get('/products/:id', (req, res) => {
    const product = products.find(p => p.id == req.params.id);
    if (!product) return res.status(404).json({ message: "Продукт не знайдено" });
    res.json(product);
});

// 3️⃣ Додати новий продукт
app.post('/products', (req, res) => {
    const newProduct = { id: products.length + 1, ...req.body };
    products.push(newProduct);
    res.status(201).json(newProduct);
});

// 4️⃣ Оновити продукт
app.put('/products/:id', (req, res) => {
    let product = products.find(p => p.id == req.params.id);
    if (!product) return res.status(404).json({ message: "Продукт не знайдено" });

    product = { ...product, ...req.body };
    res.json(product);
});

// 5️⃣ Видалити продукт
app.delete('/products/:id', (req, res) => {
    products = products.filter(p => p.id != req.params.id);
    res.json({ message: "Продукт видалено" });
});

// Запуск сервера
app.listen(3000, () => console.log('Сервер працює на порту 3000'));

🏆 5. Висновки

REST – це архітектурний стиль, набір принципів, які варто застосовувати для створення API.
RESTful API – це API, яке реалізує всі принципи REST і слідує найкращим практикам.
Не всі API, які називають REST, є дійсно RESTful, оскільки вони можуть порушувати певні принципи.

📌 Якщо API має чисті URL, використовує HTTP-методи правильно, повертає статус-коди та не зберігає стан – воно є RESTful! 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *