Что такое REST (архитектурный стиль) и его ключевые принципы?

«Что такое REST (архитектурный стиль) и его ключевые принципы?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST (Representational State Transfer) — это архитектурный стиль для построения распределенных веб-сервисов, использующий стандарты HTTP. Он основан на работе с ресурсами.

6 ключевых ограничений (принципов) REST:

  1. Единообразие интерфейса (Uniform Interface): Стандартизация взаимодействия.
    • Ресурсы идентифицируются URI (например, /api/books/123).
    • Манипуляции через HTTP-методы (GET, POST, PUT, DELETE, PATCH).
    • Самодостаточные сообщения (запрос/ответ содержат всю информацию).
    • HATEOAS (опционально) — ответы содержат ссылки на возможные действия.
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента содержит всю необходимую для его обработки информацию. Сервер не хранит состояние сессии между запросами.
  3. Кэшируемость (Cacheable): Ответы должны явно указывать, можно ли их кэшировать, чтобы повысить производительность.
  4. Клиент-серверное разделение (Client-Server): Четкое разделение обязанностей улучшает переносимость и масштабируемость.
  5. Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (прокси, балансировщики, шлюзы), что скрыто от клиента.
  6. Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript).

Пример RESTful-запроса:

GET /api/users/42 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer <token>

Пример ответа:

{
  "id": 42,
  "name": "Alice",
  "email": "alice@example.com",
  "_links": {
    "self": { "href": "/api/users/42" },
    "orders": { "href": "/api/users/42/orders" }
  }
}