REST

Базовый System Design
≈ 2 мин чтения

HTTP API вокруг ресурсов

REST — распространённый подход к построению HTTP API, где адрес описывает ресурс, а HTTP-метод показывает действие над ним. Клиент работает с понятными URI и стандартной семантикой протокола.

GET /users/42
POST /orders
PUT /users/42/profile
DELETE /sessions/abc123

Такой интерфейс удобно использовать между backend-сервисами, браузерами и мобильными приложениями, потому что HTTP поддерживается практически везде.

Метод и статус несут смысл

GET используют для чтения, POST — для создания или запуска операции, PUT — для записи представления по известному адресу, DELETE — для удаления. Ответ дополняется HTTP-статусом: например, 200 означает успешный ответ, 201 — созданный ресурс, 404 — отсутствие запрошенного ресурса.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 42,
  "name": "Alice"
}

URI должен описывать предметную область

API проще читать, когда путь говорит о сущности, а не повторяет название внутреннего метода. Например, /orders/15 устойчивее к изменениям реализации, чем /callOrderServiceMethod.

Формат тела — часто JSON, но REST не требует именно его. Важнее, чтобы контракт был стабильным, а клиент не зависел от деталей хранения или внутренней структуры сервиса.

REST — не просто «JSON по HTTP». Качество API определяется последовательной семантикой ресурсов, методов, статусов и совместимостью контракта.