архитектурный стиль, применяемый при создании веб-сервисов семантическое использование HTTP-методов: GET отвечает за чтение, POST — за создание, PUT/PATCH — за обновление, DELETE — за удаление идемпотентность методов: повторное выполнение GET, PUT и DELETE не должно приводить к дополнительным побочным эффектам отсутствие состояния (stateless) — сервер не сохраняет контекст клиента между отдельными запросами ресурсы однозначно обозначаются с помощью URI GET-запросы используются только для получения данных и выполняются без тела ресурс может передаваться в разных форматах представления, включая JSON и XML результат обработки сообщается через…
Какие принципы REST нужно знать на собеседовании: HTTP-методы, stateless и отсутствие тела в GET?
архитектурный стиль, применяемый при создании веб-сервисов семантическое использование HTTP-методов: GET отвечает за чтение, POST — за создание, PUT/PATCH — за обновление, DELETE — за удаление идемпотентность методов:…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Базовые принципы 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, благодаря чему достигаются совместимость и масштабируемость.