Альтернативой может быть добавление в систему другого ресурса для отслеживания просмотров профиля. Вы можете назвать это «Просмотр».
Просмотр всех просмотров профиля:
GET / анкеты / 123 / просмотры
Чтобы добавить просмотр в профиль:
POST / profile / 123 / viewings # здесь, вы бы отправили информацию, используя пользовательский тип носителя в теле запроса.
Чтобы обновить существующий Просмотр:
PUT / viewings / 815 # отправляет пересмотренные атрибуты Просмотр в теле запроса, используя созданный вами тип носителя.
Чтобы углубиться в детали просмотра:
GET / просмотров / 815
Чтобы удалить просмотр:
УДАЛИТЬ / просмотров / 815
Кроме того, поскольку вы запрашиваете рекомендации, убедитесь, что ваша RESTful-система управляется гипертекстом .
В большинстве случаев нет ничего плохого в использовании параметров запроса в URI - просто не дайте своим клиентам понять, что они могут ими манипулировать.
Вместо этого создайте тип носителя, который воплощает концепции, которые параметры пытаются моделировать. Дайте этому типу носителя краткое, однозначное и описательное имя. Затем запишите этот тип носителя. Реальная проблема предоставления параметров запроса в REST заключается в том, что эта практика часто приводит к внеполосной связи и, следовательно, к усилению связи между клиентом и сервером.
Тогда дайте вашей системе единый интерфейс. Например, добавление нового ресурса всегда является POST. Обновление ресурса всегда является PUT. Удаление - это УДАЛЕНИЕ, а получение - это ПОЛУЧЕНИЕ.
Самая сложная часть в REST - это понимание того, как типы медиа фигурируют в проектировании системы (это также та часть, которую Филдинг упустил из своей диссертации, потому что у него не хватило времени). Если вам нужен конкретный пример гипертекстовой системы, которая использует и изменяет типы носителей, см. Sun Cloud API .