Я пытаюсь понять REST. В REST GET не должен запускать что-то транзакционное на сервере (это определение, на которое все согласны, оно имеет фундаментальное значение для REST).
Итак, представьте, что у вас есть такой веб-сайт, как stackoverflow.com(я так говорю, если у меня есть базовые сведения о SO, это не меняет ничего на мой вопрос), где каждый раз кто-то читает вопрос, используя GET, там также отображается некоторый дисплей, показывающий: "Этот вопрос был прочитан 256 раз".
Теперь кто-то еще читает этот вопрос. Счетчик теперь равен 257. GET является транзакционным, потому что количество просмотров увеличилось и теперь снова увеличивается. "Число просмотров" увеличивается в БД, и об этом не спорят (например, на SO всегда отображается количество просмотров любого вопроса).
Итак, является ли REST GET принципиально несовместимым с любым "количеством представлений", например функциональностью на веб-сайте?
Поэтому, если он хочет быть "RESTFUL", если главная страница SO перестает отображать простые HTML-ссылки, к которым обращаются с помощью GET или перестает отображать "этот вопрос был просмотрен x раз"?
Поскольку приращение счетчика в БД является транзакционным и, следовательно, "неустранимым"?
ИЗМЕНИТЬ, чтобы пользователи Google Googling могли получить некоторые указатели:
Из http://www.xfront.com/REST-Web-Services.html:
4. Все ресурсы, доступные через HTTP GET, должны быть свободными от побочных эффектов. То есть запрос должен просто вернуть представление ресурса. Вызов ресурса не должен приводить к изменению ресурса.
Теперь мне, если представление содержит "количество просмотров", оно является частью ресурса [и в SO "количество просмотров" вопрос имеет очень важную информацию], и доступ к нему определенно изменяет ресурс.
Это резко контрастирует, скажем, с истинным RESTFUL HTTP GET, как тот, который вы можете сделать на ресурсе Amazon S3, где ваш GET гарантированно не будет изменять ресурс, который вы получите.
Но я все еще очень смущен.