Перейти к содержанию

REST (Representational State Transfer)

REST — это архитектурный стиль для построения веб-сервисов, основанный на принципах взаимодействия через HTTP и представление ресурсов.

REST не является протоколом или стандартом — это набор ограничений и рекомендаций, которые делают API понятным, масштабируемым и кроссплатформенным.


Основные принципы REST

1.Клиент-серверная архитектура

  • Клиент (например, браузер или мобильное приложение) и сервер отделены.

  • Сервер отвечает за хранение и обработку данных.

  • Клиент — за отображение и взаимодействие с пользователем.

2.Отсутствие состояния (statelessness)

  • Каждый HTTP-запрос должен быть самодостаточным.

  • Сервер не хранит состояние клиента между запросами.

  • Все необходимые данные (например, токен авторизации) должны передаваться в каждом запросе.

3.Кеширование

  • Ответы сервера могут быть кешируемыми, если они не изменяются часто.

  • Это позволяет снизить нагрузку и повысить производительность.

4.Единый интерфейс (uniform interface)

  • Взаимодействие с ресурсами всегда происходит через единые правила.

  • Ресурсы идентифицируются через URL.

  • Операции выполняются с помощью стандартных HTTP-методов:

    • GET – получить ресурс (чтение данных). Является безопасным и идемпотентным (выполнение запроса не изменяет состояние сервера и при повторении дает тот же результат).

    • POST – создать новый ресурс. Не является ни безопасным, ни идемпотентным: повторный POST может создавать дубли (например, два одинаковых заказа).

    • PUT – полное обновление ресурса (замена). Не безопасен, но идемпотентен: несколько одинаковых PUT приведут к одному и тому же итоговому состоянию ресурса.

    • PATCH – частичное обновление ресурса. Не идемпотентен (если не спроектирован специально), так как повторный PATCH может применить изменения повторно.

    • DELETE – удаление ресурса. Тоже не безопасен, но практически идемпотентен (удаление уже удаленного ресурса обычно возвращает код 404 без дополнительных эффектов)

5.Идентификация ресурсов через URI

  • Ресурсы (например, пользователи, заказы) представлены уникальными адресами:
GET /users/42
DELETE /orders/1001

6.Представление ресурса (Representation)

  • Ресурс может передаваться в разных форматах: JSON (чаще всего), XML и др.

  • Клиент может запрашивать нужный формат через заголовок Accept.

7.Код по требованию (необязательный принцип)

  • Сервер может передавать клиенту исполняемый код (например, JavaScript).

  • Этот принцип редко используется на практике.


Пример REST-запроса

GET /api/users/10 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer abc123

Ответ:

{
  "id": 10,
  "name": "Alice",
  "email": "alice@example.com"
}

Преимущества REST

  • Простота и понятность.

  • Использование стандартных HTTP-методов.

  • Масштабируемость и гибкость.

  • Поддержка кэширования и разграничения клиент-серверной логики.

Полезные ресурсы:

Источники:

Дополнительные материалы: