Является ли REST архитектурным стилем или протоколом?

«Является ли REST архитектурным стилем или протоколом?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Ключевые принципы REST:

  • Единообразие интерфейса: Ресурсы идентифицируются URI, а операции над ними — стандартными HTTP-методами (GET, POST, PUT, DELETE, PATCH).
  • Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние сессии клиента.
  • Кэшируемость: Ответы сервера должны явно указывать, можно ли их кэшировать, чтобы повысить производительность.
  • Клиент-серверная архитектура: Четкое разделение обязанностей.
  • Слоистая система: Архитектура может состоять из нескольких слоев (прокси, балансировщики, шлюзы), что повышает масштабируемость.

Пример RESTful-запроса (HTTP):

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

Сервис, построенный по этим принципам, называется RESTful API. Сам же REST — это стиль проектирования, а не протокол.