Соответствует ли HATEOAS ресурсам через GET /resources
, когда этот вызов каждый раз возвращает другой ресурс?Соответствует ли HATEOAS? GET тот же адрес с разными результатами
Например, чтобы распределить ресурсы по клиентам, в соответствии с некоторым внутренним алгоритмом, то есть я не хочу, чтобы каждый клиент получал всегда один и тот же ресурс (допустим, я закодировал сервер «фраза дня» и распределял их случайным образом) :
Первый вызов: GET/ресурсы
200 OK
{
"_links" : { "self" : "/resources/1" },
"data" : "foo"
}
Второй вызов: GET/ресурсы
200 OK
{
"_links" : { "self" : "/resources/2" },
"data" : "bar"
}
Или лучше, чтобы обеспечить GET /resources/chooser
, который возвращает объект links
конкретному ресурсу и совершает второй звонок?
GET должен быть идемпотентом - см https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Safe_methods – Squidly
По вашей ссылке «идемпотентность относится к состоянию системы после того, как запрос будет завершен, поэтому в то время как действие по сервер (например, удаление записи) или возвращаемый код ответа может отличаться при последующих запросах « –
Вы неправильно поняли это - это относится к' PUT' & 'DELETE'.«Запрос GET» не должен иметь побочных эффектов, помимо относительно безвредных эффектов, таких как ведение журнала, кеширование, подача рекламных баннеров или увеличение веб-счетчика. «Счетчик веб-страниц - это то, что отслеживает количество посетителей. – Squidly