Каковы ключевые принципы архитектуры REST?

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

Ответ

REST (Representational State Transfer) — это набор архитектурных ограничений для построения веб-сервисов. Его основные принципы:

  1. Единообразие интерфейса (Uniform Interface): Стандартизация взаимодействия.

    • Ресурсы идентифицируются URI (например, /api/users/1).
    • Действия над ресурсами определяются HTTP-методами: GET (чтение), POST (создание), PUT (полное обновление), PATCH (частичное обновление), DELETE (удаление).
    • Самодостаточные сообщения (заголовки, тело).
    • HATEOAS (Hypermedia as the Engine of Application State) — ссылки на связанные ресурсы в ответе.
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента содержит всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние сессии клиента.

  3. Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать, чтобы повысить производительность.

  4. Клиент-серверная архитектура: Четкое разделение обязанностей.

  5. Многоуровневая система (Layered System): Клиент не знает, взаимодействует ли он с конечным сервером или с промежуточным узлом (прокси, балансировщик).

  6. Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript).

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

GET /api/users/1 HTTP/1.1
Host: api.example.com
Accept: application/json
{
  "id": 1,
  "name": "John Doe",
  "_links": {
    "self": { "href": "/api/users/1" },
    "posts": { "href": "/api/users/1/posts" }
  }
}