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

REST (Representational State Transfer)

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метод Назначение
GET Получение ресурса
POST Создание ресурса
PUT Полное обновление ресурса
PATCH Частичное обновление
DELETE Удаление ресурса

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-методов.

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

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