ruby-on-rails - 放与幂等

标签 ruby-on-rails ruby api http rest

如果您的模型包含一个名为“created”和“updated”的文件

当您使用 PUT 将内容更新到此记录时..

  1. created应该设置为数据创建时间还是修改时间?由于 PUT 是幂等的,因此不应依赖于先前的值

  2. 既然updated总是在你发出请求的时候被修改,那么违反了幂等原则?

最佳答案

Should created be set to the time of data creation or modification? Since PUT is idempotent, so it should not rely on previous value.

我真的不明白你在这里问什么。没有理由将 created_at 设置为修改时间,因为它们是两个不同的概念。

Since updated is always modified when you issue the request, so it violated the principle of idempotent?

您关于 updated_at 总是被修改的假设是不正确的(至少在 Rails 中不是,也不应该在其他任何地方)。如果您多次执行相同的 PUT,则不会违反幂等性,因为这些后续请求不会修改任何属性,因此 updated_at 时间不是 改变了。

有一个有趣的post on the Rails blog about PUT & PATCH这增加了更多。在我看来,用户永远不应该在他们的请求中发送 created_atupdated_at (因为服务器通常应该忽略它们并自行设置它们),尽管它确实是这是否违反了 PUT 应该发送整个对象的想法值得怀疑。然而,如果这个想法被忽略了(就像它在 Rails 中以及其他地方经常发生的那样),那么 PUT 确实是幂等的。

关于ruby-on-rails - 放与幂等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450611/

相关文章:

javascript - Typeahead.js - 使用一个远程源的多个数据集

ruby-on-rails - 新 Rails 3 项目中的未定义方法 `use_transactional_fixtures='

ruby-on-rails - 我无法让 ckeditor 允许除基本属性之外的任何内容,并且无法关闭/配置高级内容编辑器 (rails)

ruby-on-rails - 需要从验证写入数据库

ruby-on-rails - 获取某个时间段内创建的记录

ruby - 单元测试和 SAP 软件

c# - 闭包和 lambda 之间的区别?

python - 帮助获取 Reddit 帖子链接到的 URL With PRAW

json - Google Apps 脚本 : Returning "null" when trying to select a specific object in a API response but I can see it in the original response

ruby-on-rails - 需要通过 Travis API 调用查看 repo 拉取请求的 Travis CI 测试统计信息