Що таке REST API?
REST API — найпоширеніший стиль побудови вебAPI, у якому кожен обʼєкт системи доступний за своєю адресою, а дія над ним задається HTTP-методом: GET — отримати, POST — створити, PUT — змінити, DELETE — видалити.
Адреса описує ресурс, метод — операцію. Запит GET /users/42 повертає дані користувача, DELETE /users/42 видаляє його. Відповідь містить дані — зазвичай у форматі JSON — і код статусу: 200 при успіху, 404 якщо обʼєкта немає, 401 за відсутності авторизації.
Ще одна важлива властивість REST — відсутність стану: кожен запит самодостатній і містить усе потрібне, включно з токеном авторизації. Сервер не памʼятає попередній запит, що спрощує масштабування.
Де застосовується
REST — стандарт де-факто для звʼязку фронтенду з бекендом і сервісів між собою. На ньому побудовані публічні API GitHub, Stripe, Telegram і більшість корпоративних систем. У Java його пишуть контролерами Spring Boot, у Python — на FastAPI або Django REST Framework, у Node.js — на Express.
Навколо REST вибудуваний і робочий інструментарій. Розробник описує методи в OpenAPI та отримує готову документацію, QA-інженер збирає колекції запитів у Postman, автоматизатор пише перевірки на RestAssured чи requests, а DevOps дивиться за кодами відповідей, чи здоровий сервіс.
Приклад
Мобільний застосунок банку відкриває історію операцій: GET /accounts/42/transactions?limit=20 повертає двадцять останніх записів і код 200, а при простроченому токені — 401, після чого застосунок мовчки оновлює токен і повторює запит.
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer <token>
{
"name": "Анна",
"email": "[email protected]"
}
HTTP/1.1 201 Created
Location: /api/users/42
{
"id": 42,
"name": "Анна",
"email": "[email protected]"
} Часті запитання
Чим REST відрізняється від SOAP?
SOAP — суворий протокол на базі XML з обовʼязковим описом контракту і власними правилами безпеки. REST — набір домовленостей поверх звичайного HTTP, зазвичай із JSON. SOAP ще трапляється в банках і держсистемах, нові публічні API майже завжди роблять на REST.
Що означають коди відповіді 401 і 403?
401 означає, що сервер не зрозумів, хто ви: токен не переданий, минув або хибний. 403 — вас упізнали, але прав на цю операцію немає. Перше лікується повторною авторизацією, друге — зміною ролі користувача, і повторювати такий запит немає сенсу.
Чи обовʼязково REST API повертає JSON?
Ні, формат не є частиною REST. Практично завжди це JSON, бо він компактний і підтримується всюди, але той самий метод може віддати XML, CSV або файл. Бажаний формат клієнт запитує заголовком Accept.
Що таке ідемпотентність запиту?
Ідемпотентний запит можна повторити кілька разів із тим самим результатом. GET, PUT і DELETE такими й задумані, а POST — ні: два однакові POST створять два замовлення. Тому повторне надсилання платежів захищають унікальним ключем операції.