Коротка відповідь
juniorREST — це архітектурний стиль для розподілених систем, що ґрунтується на принципах клієнт‑серверної взаємодії, безстанності та кешованості. Кожен ресурс ідентифікується унікальним URI, а взаємодія здійснюється через стандартні HTTP‑методи: GET, POST, PUT, DELETE. У RESTful API відповіді зазвичай повертають JSON або XML, що полегшує інтеграцію між різними платформами.
Повне пояснення
Що це і навіщо REST (Representational State Transfer) — архітектурний стиль, що дозволяє створювати масштабовані веб‑сервіси. Він забезпечує просту, стандартизовану взаємодію між клієнтом і сервером.
Ключові принципи/терміни
- URI (Uniform Resource Identifier) – унікальний ідентифікатор ресурсу.
- HTTP‑методи – GET, POST, PUT, PATCH, DELETE, HEAD.
- Безстанність (statelessness) – кожен запит містить всю необхідну інформацію.
- Кешованість (cacheability) – відповіді можуть бути кешовані для зменшення навантаження.
- Класифікація ресурсів – ресурси представлені у вигляді об’єктів.
Як це працює Клієнт надсилає HTTP‑запит до URI, сервер обробляє його і повертає представлення ресурсу. Сервер не зберігає стан між запитами, тому кожен запит обробляється незалежно.
Практика і реалізація (JavaScript/TypeScript)
import axios from 'axios';
const getUser = async (id: number) => {
const { data } = await axios.get(`/api/users/${id}`);
return data;
};
Тестування (Jest + Supertest)
import request from 'supertest';
import app from './app';
test('GET /api/users/1', async () => {
const res = await request(app).get('/api/users/1');
expect(res.status).toBe(200);
expect(res.body).toHaveProperty('id', 1);
});
Безпека і приватність
- Використовувати HTTPS.
- Аутентифікація через JWT або OAuth2.
- Валідація вхідних даних, щоб уникнути SQL‑ін’єкцій і XSS.
Оптимізація
- Кешування відповіді за допомогою заголовків
Cache-Control. - Пагінація, сортування і фільтрація через query‑параметри.
Часті помилки
- Повернення
200 OKпри створенні ресурсу – краще201 Created. - Відсутність
Content-Type: application/jsonу відповіді. - Необхідність в підтримці
ETagдля оптимізації оновлень.
Cheatsheet
- GET – читання
- POST – створення
- PUT/PATCH – оновлення
- DELETE – видалення
- HEAD – метадані