Что такое 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 создадут два заказа. Поэтому повторную отправку платежей защищают уникальным ключом операции.