Какие принципы REST нужно знать на собеседовании: HTTP-методы, stateless и отсутствие тела в GET?

архитектурный стиль, применяемый при создании веб-сервисов семантическое использование HTTP-методов: GET отвечает за чтение, POST — за создание, PUT/PATCH — за обновление, DELETE — за удаление идемпотентность методов:…

Короткий ответ

Что ответить на собеседовании

архитектурный стиль, применяемый при создании веб-сервисов семантическое использование HTTP-методов: GET отвечает за чтение, POST — за создание, PUT/PATCH — за обновление, DELETE — за удаление идемпотентность методов: повторное выполнение GET, PUT и DELETE не должно приводить к дополнительным побочным эффектам отсутствие состояния (stateless) — сервер не сохраняет контекст клиента между отдельными запросами ресурсы однозначно обозначаются с помощью URI GET-запросы используются только для получения данных и выполняются без тела ресурс может передаваться в разных форматах представления, включая JSON и XML результат обработки сообщается через…

Подробный разбор

Ответ с пояснениями

Базовые принципы REST

  • архитектурный стиль, применяемый при создании веб-сервисов
  • семантическое использование HTTP-методов: GET отвечает за чтение, POST — за создание, PUT/PATCH — за обновление, DELETE — за удаление
  • идемпотентность методов: повторное выполнение GET, PUT и DELETE не должно приводить к дополнительным побочным эффектам
  • отсутствие состояния (stateless) — сервер не сохраняет контекст клиента между отдельными запросами
  • ресурсы однозначно обозначаются с помощью URI
  • GET-запросы используются только для получения данных и выполняются без тела
  • ресурс может передаваться в разных форматах представления, включая JSON и XML
  • результат обработки сообщается через стандартные статусы HTTP, например 200, 404 и 500
  • использование кэширования помогает повысить производительность

В совокупности эти правила делают API простым, совместимым и пригодным для масштабирования.

Развёрнутый ответ

Краткий ответ

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

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

  • Применение стандартных HTTP-методов в соответствии с их семантикой:
  • GET используется для получения ресурса: состояние не изменяется, а тело запроса обычно не передаётся,
  • POST предназначен для создания ресурса,
  • PUT заменяет ресурс целиком,
  • PATCH изменяет ресурс частично,

DELETE удаляет ресурс. Такое распределение соответствует принципу идемпотентности в тех случаях, когда он применим: например, GET, PUT, DELETE должны быть идемпотентными.

Работа с ресурсами посредством URI: каждому ресурсу назначается уникальный URI, при этом ресурсы и коллекции должны быть четко разделены.

Отсутствие состояния на сервере (statelessness): запрос сам содержит все сведения, необходимые для обработки. Сервер не запоминает состояние клиента между запросами, благодаря чему упрощаются масштабирование и обеспечение надежности.

Передача представлений ресурсов (representations): ресурс может возвращаться в JSON, XML и других форматах, а клиент способен запросить нужное представление с помощью заголовков Accept.

Кэширование: в ответе следует явно указывать, можно ли его кэшировать. Это позволяет ускорить работу и уменьшить нагрузку на систему.

Практические аспекты

  • Метод GET не должен передавать тело запроса: его назначение — исключительно извлечение данных, поэтому он должен оставаться безопасным и идемпотентным.
  • Применение стандартных кодов HTTP-ответов (200 OK, 201 Created, 404 Not Found, 204 No Content) упрощает интерпретацию результатов и обработку ошибок.
  • REST API должен быть самодокументируемым и использовать стандартные протоколы, чтобы интеграция с ним не требовала лишних сложностей.

Главные выводы

  • Однозначное соответствие HTTP-методов операциям CRUD — важное условие предсказуемого поведения API.
  • Благодаря тому, что сервер не хранит состояние клиента, REST-система проще масштабируется.
  • Единообразный интерфейс (uniform interface) составляет основу REST и предполагает стандартизированный способ взаимодействия.

Практическое применение

В реальных системах REST-стандарты помогают создавать API, которые удобно сопровождать и интегрировать. Например, в микросервисной архитектуре RESTful-сервисы обмениваются данными по стандартизированным HTTP-запросам в формате JSON, благодаря чему достигаются совместимость и масштабируемость.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку