Встречается на 13% собеседований по Analytics

Что такое REST

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

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

REST опирается на несколько ключевых принципов, которые делают его простым и предсказуемым:

  • Ресурсы и URL — каждый объект (пользователь, товар, заказ) идентифицируется уникальным URL. Например, /api/users/1 — это конкретный пользователь с идентификатором 1.
  • HTTP-методы — операции над ресурсами выполняются стандартными методами: GET (чтение), POST (создание), PUT или PATCH (обновление), DELETE (удаление).
  • Stateless (без состояния) — сервер не хранит информацию о клиенте между запросами. Каждый запрос содержит все данные, необходимые для его обработки, что упрощает масштабирование.
  • Кэширование — ответы могут быть помечены как кэшируемые, что снижает нагрузку на сервер и ускоряет повторные запросы.
  • Единообразие интерфейса — клиент и сервер общаются через стандартные форматы (например, JSON или XML) и следуют единым правилам, что делает API предсказуемым.

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

Типичный REST-запрос на получение данных выглядит так:

http
GET /api/users/1 HTTP/1.1
Host: example.com
Accept: application/json

Сервер отвечает представлением ресурса в выбранном формате:

json
{
  "id": 1,
  "name": "John Doe",
  "email": "john@example.com"
}

Здесь клиент запрашивает пользователя с ID 1, а сервер возвращает его данные в JSON. Это наглядный пример того, как REST использует HTTP для передачи состояния ресурса.

Подводные камни и ограничения

Несмотря на популярность, REST имеет нюансы, которые важно учитывать:

  • Не все API, называемые RESTful, соответствуют принципам — часто встречаются нарушения, например, использование GET для изменения данных или неинформативные коды ответов.
  • Проблема избыточности данных — клиент может получать больше полей, чем нужно, что увеличивает объём трафика.
  • Сложность с частичными обновлениямиPUT обычно заменяет ресурс целиком, а для точечных изменений приходится использовать PATCH.
  • Отсутствие строгого стандарта — REST описывает принципы, но не детали реализации, поэтому разные сервисы могут отличаться.

Когда использовать REST

REST подходит для большинства веб-сервисов, где нужна простая интеграция с HTTP-инфраструктурой. Его выбирают, когда:

  • Требуется публичный API для внешних разработчиков.
  • Система использует стандартные операции CRUD (создание, чтение, обновление, удаление).
  • Важна масштабируемость и простота кэширования.

Однако для высоконагруженных систем с сложными запросами или строгими требованиями к контрактам иногда предпочитают GraphQL или gRPC.

Коротко

  • REST — архитектурный стиль на основе HTTP, где всё представлено как ресурсы с URL.
  • Основные принципы: stateless, кэширование, единообразие интерфейса, использование HTTP-методов.
  • Пример: GET /api/users/1 возвращает JSON с данными пользователя.
  • REST прост и масштабируем, но не имеет строгого стандарта и может быть избыточным для сложных запросов.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы