Каковы основные преимущества и недостатки REST API?

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

Ответ

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

  1. Простота и стандартизация: Использует хорошо известные HTTP-методы (GET, POST, PUT, DELETE, PATCH) и коды состояния.
  2. Stateless-архитектура: Каждый запрос содержит всю необходимую информацию, что упрощает масштабирование и повышает надежность.
  3. Кэшируемость: Ответы могут быть закэшированы на стороне клиента или промежуточных прокси, используя стандартные HTTP-заголовки (Cache-Control, ETag).
  4. Гибкость данных: Поддерживает различные форматы (JSON, XML), где JSON стал де-факто стандартом для веб-API.
  5. Разделение клиента и сервера: Позволяет независимо развивать фронтенд и бэкенд.

Недостатки REST:

  1. Проблемы с эффективностью данных:
    • Over-fetching: Клиент получает больше данных, чем ему нужно.
    • Under-fetching: Для построения одного представления может потребоваться несколько запросов к разным эндпоинтам.
  2. Отсутствие строгой спецификации: Нет единого стандарта на структуру URL, версионирование или документацию, что может привести к неконсистентным API.
  3. Сложность для реального времени: Не поддерживает двунаправленную коммуникацию «из коробки» (для этого нужны WebSockets или Server-Sent Events).

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

GET /api/v1/users/42 HTTP/1.1
Host: api.example.com
Accept: application/json
Authorization: Bearer <token>
{
  "id": 42,
  "name": "John Doe",
  "email": "john@example.com",
  "created_at": "2023-01-15T10:30:00Z"
}