На самом деле, RESTfulness применяется только к RESOURCES, как указано универсальным идентификатором ресурса. Так что даже говорить о таких вещах, как заголовки, куки и т. Д. В отношении REST, не совсем уместно. REST может работать по любому протоколу, даже если он обычно выполняется по HTTP.
Основным определителем является следующее: если вы отправляете вызов REST, который является URI, то после успешного вызова на сервер этот URI возвращает тот же контент, предполагая, что переходы не были выполнены (PUT, POST, DELETE) ? Этот тест исключил бы возврат ошибок или запросов на аутентификацию, поскольку в этом случае запрос еще не поступил на сервер, то есть сервлет или приложение, которое будет возвращать документ, соответствующий данному URI.
Аналогично, в случае POST или PUT, можете ли вы отправить определенный URI / полезную нагрузку, и независимо от того, сколько раз вы отправляете сообщение, оно всегда будет обновлять одни и те же данные, чтобы последующие GET возвращали согласованный результат?
REST относится к данным приложения, а не к низкоуровневой информации, необходимой для передачи этих данных.
В следующем сообщении в блоге Рой Филдинг дал хорошее резюме всей идеи REST:
http://groups.yahoo.com/neo/groups/rest-discuss/conversations/topics/5841
«Система RESTful переходит от одного устойчивого состояния к следующему, и каждое такое устойчивое состояние является одновременно потенциальным начальным состоянием и потенциальным конечным состоянием. То есть система RESTful представляет собой неизвестное число компонентов, подчиняющихся простому набору правила таковы, что они всегда находятся в состоянии REST или переходят из одного состояния RESTful в другое состояние RESTful. Каждое состояние может быть полностью понято представлением (ями), которые оно содержит, и набором переходов, которые оно обеспечивает, с переходами, ограниченными униформой набор действий, которые должны быть понятны. Система может представлять собой сложную диаграмму состояний, но каждый пользовательский агент может видеть только одно состояние за раз (текущее устойчивое состояние), и, таким образом, каждое состояние является простым и может анализироваться независимо. Пользователь OTOH может создавать свои собственные переходы в любое время (например, ввести URL, выбрать закладку,открыть редактор и т. д.).
Переходя к вопросу аутентификации, независимо от того, выполняется ли она с помощью файлов cookie или заголовков, если информация не является частью полезной нагрузки URI и POST, она на самом деле не имеет ничего общего с REST. Итак, что касается отсутствия гражданства, мы говорим только о данных приложения.
Например, когда пользователь вводит данные в экран графического интерфейса, клиент отслеживает, какие поля были введены, а какие нет, какие-либо обязательные поля отсутствуют и т. Д. Это все КЛИЕНТСКИЙ КОНТЕКСТ, и его не следует отправлять или отслеживать на сервере. На сервер отправляется полный набор полей, которые необходимо изменить в ресурсе IDENTIFIED (посредством URI), чтобы в этом ресурсе происходил переход из одного состояния RESTful в другое.
Таким образом, клиент отслеживает действия пользователя и отправляет на сервер только логически завершенные переходы состояний.