Что означает «передача состояния» в представительной передаче состояния (REST)? - PullRequest
16 голосов
/ 05 января 2011

Что означает Передача состояния в представительском переводе состояния?

Нашли некоторые объяснения по этому поводу (например, здесь ), но я все еще не понимаю.Например, в статье говорится

Представление переводит клиентское приложение в состояние.

Почему?Какое состояние (как я понимаю, что-то вроде сеанса) имеет отношение к представлению ресурса?

Ответы [ 3 ]

18 голосов
/ 05 января 2011

Почему?Какое отношение имеет состояние (как я понимаю, что-то вроде сеанса) к представлению ресурса?

Объект имеет атрибуты (или состояние) и поведение (или методы).

Если я хочу переместить объект с рабочего стола на сервер, я должен сделать следующее:

  1. Создать представление состояния объекта.

  2. Перенести это представление с рабочего стола на сервер.

Методы, которые я не переношу.Я устанавливаю одно и то же определение класса на обеих машинах.

Итак, REST предназначен для создания представления текущего состояния объекта, чтобы его можно было перенести на другой сервер, с которого можно восстановить объект.

Мы отправляем только состояние - атрибуты - объекта.И мы должны создать внешнее сериализованное представление этого состояния.

11 голосов
/ 06 января 2011

Рассмотрим клиентское приложение как своего рода гигантский конечный автомат. Начальное состояние клиента равно первому представлению, возвращенному с сервера. Ссылки в возвращаемом представлении обеспечивают возможные «переходы состояний».

Следует отметить, что существует два основных типа ссылок: пассивная и активная. Пассивные ссылки, такие как <img> и <link rel="stylesheet">, на самом деле не вызывают переход состояния, они просто увеличивают текущее состояние. Однако ссылки типа <form> и <a> являются активными и вызывают переход состояния. После перехода по одной из этих ссылок новое состояние клиента будет равно возвращенному представлению, известному как передача состояния .

Если вы привыкли создавать традиционные клиентские приложения для настольных компьютеров, вы обнаружите, что это радикально другая архитектура. Не тот, который вы, вероятно, за ночь уродите. Изначально этот подход может показаться очень ограничивающим, но если учесть, что клиентское приложение может быть хостом для множества одновременно выполняющихся конечных автоматов, вы начнете понимать, что вы можете делать практически все, что вы могли бы, используя архитектуру удаленных объектов, и при этом поддерживать свободную архитектуру подключение веб-браузера.

2 голосов
/ 17 декабря 2014

Сеть состоит из ресурсов. Ресурсом является любой интересующий объект. Например, корпорация Boeing Aircraft может определять ресурс 747. Клиенты могут получить доступ к этому ресурсу с помощью thisURL: http://www.boeing.com/aircraft/747A возвращается представление ресурса (например, Boeing747.html). Представление помещает клиентское приложение в состояние. Результатом прохождения клиентом гиперссылки inBoeing747.html является доступ к другому ресурсу. Новое представление переводит клиентское приложение в еще одно состояние. Таким образом, клиентское приложение изменяет (передает) состояние с каждым представлением ресурса -> Передача состояния представления!

...