Что означает Representational State в REST?

·

·

Хотя у REST нет состояния (stateless), в его названии присутствует «передача состояния». Это слегка запутывает.

Stateless

Когда вы открываете веб-страницу в браузере, вы выступаете в качестве потребителя услуг, а www-сервер выступает в качестве поставщика услуг, его услуга — веб-страница. Если это обычное соединение, клиент и сервер идентифицируют друг друга (что принято называть английским термином handshake = рукопожатие, поскольку в этот момент они видят друг друга в первый раз) и инициируют сессию (так называемое TCP-соединение).

После этого, в зависимости от поведения сервера и клиента, состояние будет меняться на ESTABLISHED, IDLE, TIMEOUT и т.д. Но речь не идёт об этих состояниях. В REST мы используем протокол HTTP, который является stateless, то есть сервер не хранит никакой информации о клиенте. Клиент отвечает за отправку всех данных, необходимых серверу для получения услуги, то есть когда мы вызываем URI http://somedomain:8080/senthil/services/page1 от сервера, он имеет достаточно информации о клиенте, чтобы в полной мере предоставить page1 (то есть страницу 1).

Передача состояния

Воспользуемся тем же примером. Когда вы открываете веб-страницу с помощью некоторого URL для просмотра файла изображения (РЕСУРСА) на сервере, www-сервер покажет вам (клиенту) изображение в некотором виде, другими словами — РЕПРЕЗЕНТАЦИЮ РЕСУРСА (файла изображения).

Во время этого процесса постоянное состояние ресурса на сервере (т.е. состояние файла изображения в базе данных сервера) будет представлено (или, можно сказать, репрезентовано) клиенту в понятном виде, т.е. в состоянии приложения клиента. Таким образом, состояние ресурса остаётся для клиентов постоянным и изменяется только представление (репрезентация) ресурса, что, в свою очередь, изменяет состояние приложения.

Подведём итог: представление ресурса (то, как изображение показывается клиенту), которое неявно изменяет состояние как сервера, так и клиента, называется REST.


Данный материал представляет собой компиляцию Яндекса по статье What does Representational State mean in REST? со stackoverflow. При переводе использовался переводчик Deepl.com.

Что означает Representational State в REST?