Поставить и идемпотент - PullRequest
       2

Поставить и идемпотент

2 голосов
/ 26 февраля 2012

Если ваша модель содержит поле, которое называется «создано» и «обновлено»

Когда вы используете PUT для обновления содержимого этой записи ..

  1. Должен ли созданный быть установлен время создания или изменения данных? Поскольку PUT является идемпотентом, поэтому он не должен полагаться на предыдущее значение

  2. Поскольку обновление всегда модифицируется при выдаче запроса, поэтому нарушается принцип идемпотента?

Ответы [ 2 ]

6 голосов
/ 26 февраля 2012

Должно ли быть создано для времени создания или изменения данных? Поскольку PUT является идемпотентом, он не должен полагаться на предыдущее значение.

Я не очень понимаю, о чем вы здесь спрашиваете. Нет никакой причины, по которой created_at будет установлено время модификации, поскольку это две разные концепции.

Поскольку обновление всегда модифицируется при выдаче запроса, поэтому нарушается принцип идемпотента?

Ваше предположение, что updated_at всегда изменяется, не соответствует действительности (по крайней мере, не в Rails, и не должно быть где-либо еще). Если вы выполняете одно и то же PUT несколько раз, идемпотентность не нарушается, поскольку эти последующие запросы не изменяют ни один из атрибутов, и поэтому время updated_at равно , а не .

В блоге Rails есть интересная запись о PUT & PATCH, которая добавляет к этому гораздо больше. На мой взгляд, пользователь никогда не должен отправлять created_at или updated_at со своим запросом (поскольку сервер, вероятно, обычно должен игнорировать их и устанавливать их сам), хотя это действительно сомнительно, если это нарушает идею, что PUT следует отправить весь объект. Однако, если эта идея игнорируется (как это часто бывает в Rails и, возможно, в других местах), то PUT действительно идемпотентен.

0 голосов
/ 26 февраля 2012

С помощью put вы не изменяете созданные_, вы изменяете свои_добавленные_данные или как они там называются. Created_at устанавливается только при создании. Кстати, и post, и put могут использоваться для создания и обновления значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...